ทำไม sftp rmdir ไม่ทำงาน?


18

ฉันพยายามลบไดเรกทอรีที่มีไฟล์และโฟลเดอร์จำนวนมากออกจากพื้นที่เซิร์ฟเวอร์ส่วนตัวของฉัน ฉันเข้าสู่ระบบผ่านทาง SFTP ดี; ฉันสามารถเข้าถึงไดเรกทอรีทั้งหมดโดยไม่มีปัญหา ฉันยังสามารถลบไฟล์แต่ละไฟล์ด้วย rm แต่สิ่งนี้จะพาฉันไปตลอดกาล - ดังนั้นฉันอยากจะทำ rmdir ในโฟลเดอร์สูงสุดที่ฉันต้องการลบ แต่เมื่อฉันทำสิ่งนี้ฉันจะได้รับ

ไม่สามารถลบไดเรกทอรี: ล้มเหลว

มีความคิดเกี่ยวกับสิ่งที่ฉันอาจทำผิดหรือเปล่า?

ขอบคุณมากแซม


หากคุณสามารถ SFTP ลงในเซิร์ฟเวอร์นั้นคุณสามารถ SSH ได้หรือไม่ ถ้าเป็นเช่นนั้นคุณสามารถใช้คำสั่ง RM เวอร์ชันที่มีประสิทธิภาพยิ่งขึ้น: rm -rf foo / *
Chris

คำตอบ:


21

จากประสบการณ์ของฉัน rmdir ชอบที่จะทำงานในไดเรกทอรีว่าง หากคุณพยายามลบไดเรกทอรีfooฉันจะทำ:

$rm foo/*
$rmdir foo

2
แก้ไขแล้วเนื่องจากแฟล็ก -rf ไม่มีอยู่สำหรับ rm ใน sftp
Chris

1
SSH การทำ rm -rf เป็นคำตอบที่ชัดเจน ฉันลอง rm -rf บน SFTP แต่ไม่สามารถรับ -rf ได้ตามที่คุณชี้ (เคล็ดลับไวด์การ์ดใน SFTP ไม่ทำงานเช่นกัน) อย่างไรก็ตามขอขอบคุณสำหรับความช่วยเหลือของคุณ!
user1451632

มันสนุก. rm foo / * ทำงานให้ฉันใน SFTP อย่างไรก็ตามฉันดีใจที่คุณได้รับการแก้ไข!
Chris

ยังคงไม่ลบไดเรกทอรีซ้ำ มันดีพออยู่แล้ว แต่ยังไม่สมบูรณ์แบบ :-)
Krzysztof Jabłoński

พบปัญหาเดียวกันและrm foo/*ไม่ทำงานเนื่องจากfoo/มีไดเรกทอรีที่ไม่ว่างเปล่า โชคดีที่rsyncได้รับอนุญาตเช่นกันและฉันสร้างไดเรกทอรีว่างไว้ในเครื่องและใช้rsync -rv --delete empty_local_dir/ host.example.org:/foo/เพื่อลบทุกสิ่งภายใต้foo/ไดเรกทอรีระยะไกล หลังจากนั้นก็เป็นไปได้ที่จะrmdir fooผ่าน SFTP
ckujau

5

คุณไม่ได้ระบุสิ่งที่ลูกค้า SFTP คุณใช้ ดังนั้นฉันสมมติว่า OpenSSH SFTP ( sftp)

คำสั่งrmdirในไคลเอนต์ OpenSSH SFTP แมปโดยตรงกับการSSH_FXP_RMDIRร้องขอโพรโทคอล SFTP ข้อมูลจำเพาะ SFTP สำหรับเวอร์ชัน 3 (อันที่ใช้โดย OpenSSH) ระบุอย่างเจาะจงว่าการSSH_FXP_RMDIRดำเนินการอาจล้มเหลว"ถ้าไดเรกทอรีที่ระบุไม่ว่างเปล่า" (แม้ว่าจะดูเหมือนว่าจะไม่ได้รับคำสั่งก็ตาม)

หากไดเรกทอรีไม่มีไดเรกทอรีย่อยคุณสามารถใช้rm foo/*(หมายถึงคำสั่ง OpenSSH SFTP ไม่ใช่คำสั่ง shell) เพื่อลบไฟล์ทั้งหมดในไดเรกทอรีก่อน rmdirและจากนั้นใช้


1
คำถามคลาสสิกคือ: คุณจะทำอย่างไรrm -r *กับ SFTP ฉันไม่คิดว่าเป็นไปได้
Jari Turkia

2
@JariTurkia มันเป็นไปไม่ได้กับsftp(ไคลเอนต์บรรทัดคำสั่ง OpenSSH) เป็นไปได้ด้วย SFTP (โปรโตคอล) หากคุณมีลูกค้าที่ฉลาดพอ
Martin Prikryl

ฉันขอขอบคุณข้อเสนอแนะใด ๆ สำหรับลูกค้า SFTP ที่ฉลาดพอ มีหนึ่งกล่องซึ่งฉันต้องคนจรจัดเป็นประจำและถูก จำกัด ไว้ที่ SFTP ด้วยเหตุผลด้านความปลอดภัย เห็นได้ชัดว่าเมื่อทำอะไรมันจะเจ็บปวดมากเนื่องจากชุดคำสั่งที่ จำกัด ของไคลเอ็นต์ SFTP ของ OpenSSH
Jari Turkia

ถามคำถามเกี่ยวกับปัญหาเฉพาะของคุณ ( "วิธีลบโฟลเดอร์ซ้ำโดยใช้ SFTP" ) - ตรวจสอบให้แน่ใจว่าคุณระบุแพลตฟอร์มของคุณ
Martin Prikryl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.