mengapa sftp rmdir tidak berfungsi?

18

Saya mencoba menghapus direktori dengan banyak file dan folder dari ruang server pribadi saya. Saya masuk melalui SFTP baik; Saya dapat mengakses seluruh direktori tanpa masalah; Saya bahkan dapat menghapus file individual dengan rm. Tapi ini akan membuat saya selamanya - jadi saya benar-benar ingin hanya melakukan rmdir pada folder tertinggi yang ingin saya hapus. Tetapi ketika saya melakukan ini, saya mengerti

Tidak dapat menghapus direktori: Kegagalan

Adakah pemikiran tentang apa yang mungkin saya lakukan salah?

Terima kasih banyak, Sam

pengguna1451632
sumber
Jika Anda dapat SFTP ke server itu, bisakah Anda SSH? Jika demikian, Anda dapat menggunakan versi yang lebih kuat dari perintah RM: rm -rf foo / *
Chris

Jawaban:

21

Dalam pengalaman saya, rmdir lebih suka bekerja pada direktori kosong. Jika Anda mencoba menghapus direktori foo, saya akan lakukan:

$rm foo/*
$rmdir foo
Chris
sumber
2
Diedit karena flag -rf tidak ada untuk rm di sftp.
Chris
1
SSH'ing untuk melakukan rm -rf adalah jawaban yang jelas. Saya mencoba rm -rf di SFTP tetapi tidak bisa menerima -rf, seperti yang Anda tunjukkan. (Trik wildcard di SFTP juga tidak berhasil.) Bagaimanapun, terima kasih banyak atas bantuan Anda!
user1451632
Itu lucu. rm foo / * bekerja untuk saya di SFTP. Bagaimanapun, saya senang Anda menyelesaikannya!
Chris
Tetap saja itu tidak menghapus direktori secara rekursif. Sudah cukup bagus, tapi belum sempurna :-)
Krzysztof Jabłoński
Punya masalah yang sama dan rm foo/*tidak berfungsi karena foo/berisi direktori yang tidak kosong. Untungnya rsyncdiizinkan juga dan saya membuat direktori kosong secara lokal dan kemudian digunakan rsync -rv --delete empty_local_dir/ host.example.org:/foo/untuk menghapus semuanya di bawah foo/direktori jarak jauh . Setelah itu dimungkinkan rmdir foomelalui SFTP.
ckujau
5

Anda belum menentukan, klien SFTP apa yang Anda gunakan. Jadi saya mengasumsikan OpenSSH SFTP ( sftp).

Perintah rmdirdalam klien OpenSSH SFTP memetakan langsung ke SSH_FXP_RMDIRpermintaan protokol SFTP. Spesifikasi SFTP untuk versi 3 (yang digunakan oleh OpenSSH) secara spesifik menyebutkan bahwa SSH_FXP_RMDIRoperasi mungkin gagal, "jika direktori yang ditentukan tidak kosong" (meskipun tampaknya tidak mengamanatkannya).

Jika direktori tidak memiliki subdirektori, Anda dapat menggunakan rm foo/*(artinya perintah OpenSSH SFTP, bukan perintah shell) untuk menghapus semua file dalam direktori terlebih dahulu. Dan kemudian gunakan rmdir.

Martin Prikryl
sumber
1
Pertanyaan klasik adalah: Bagaimana kabarmu rm -r *dengan SFTP. Saya pikir itu tidak mungkin.
Jari Turkia
2
@JariTurkia Tidak dimungkinkan dengan sftp(klien baris perintah OpenSSH). Mungkin dengan SFTP (protokol), jika Anda memiliki klien yang cukup pintar.
Martin Prikryl
Saya akan menghargai setiap saran untuk klien SFTP yang cukup pintar. Ada satu kotak tertentu, yang saya perlu mengotak-atik secara teratur dan dibatasi untuk SFTP untuk alasan keamanan. Jelas, ketika melakukan sesuatu itu menjadi sangat menyakitkan, mengingat serangkaian perintah yang terbatas yang ditawarkan SFTP-klien OpenSSH.
Jari Turkia
Ajukan pertanyaan tentang masalah spesifik Anda ( "Cara menghapus folder secara rekursif menggunakan SFTP" ) - Pastikan Anda menentukan platform Anda.
Martin Prikryl