sftp rmdir neden çalışmıyor?


18

Özel sunucu alanımdan çok sayıda dosya ve klasör içeren bir dizini kaldırmaya çalışıyorum. SFTP para cezası ile oturum açıyorum; Ben tüm dizine sorunsuz erişebilirsiniz; Hatta rm ile tek tek dosyaları silebilirim. Ama bu beni sonsuza dek sürecek - bu yüzden kaldırmak istediğim en yüksek klasörde rmdir yapmak istiyorum. Ama bunu yaptığımda,

Dizin kaldırılamadı: Hata

Neyi yanlış yaptığım hakkında bir fikrin var mı?

Çok teşekkürler, Sam


Bu sunucuya SFTP yapabiliyorsanız SSH yapabilir misiniz? Öyleyse, RM komutunun daha güçlü bir sürümünü kullanabilirsiniz: rm -rf foo / *
Chris

Yanıtlar:


21

Deneyimlerime göre, rmdir boş bir dizin üzerinde çalışmayı tercih ediyor. Dizini silmeye çalışıyorsanız foo, yapardım:

$rm foo/*
$rmdir foo

2
Düzenlendi, çünkü sftp içinde -rf bayrağı rm için mevcut değil.
Chris

1
SSH'nin rm -rf yapması bariz cevaptı. SFTP'de rm -rf'yi denedim ama işaret ettiğiniz gibi -rf'yi kabul edemedi. (SFTP'deki joker karakter de işe yaramadı.) Neyse, yardımın için bir demet teşekkürler!
user1451632

Bu komik. rm foo / * benim için SFTP'de çalıştı. Her neyse, çözdüğüne sevindim!
Chris

Yine de dizinleri özyinelemeli olarak kaldırmaz. Zaten yeterince iyi, ama henüz mükemmel değil :-)
Krzysztof Jabłoński

Aynı sorun vardı ve boş olmayan dizinler içerdiğinden rm foo/*çalışmıyordu foo/. Neyse ki rsyncizin verildi ve ben yerel olarak boş bir dizin oluşturdum ve sonra rsync -rv --delete empty_local_dir/ host.example.org:/foo/uzak foo/dizinin altındaki her şeyi kaldırmak için kullanılır . Daha sonra rmdir fooSFTP ile mümkün oldu .
ckujau

5

Hangi SFTP istemcisini kullandığınızı belirtmediniz. Bu yüzden OpenSSH SFTP ( sftp) varsayıyorum .

rmdirOpenSSH SFTP istemcisindeki komut , doğrudan SSH_FXP_RMDIRSFTP protokolü isteğiyle eşleşir. Sürüm 3 için SFTP spesifikasyonu (OpenSSH tarafından kullanılan) spesifik olarak SSH_FXP_RMDIRişlemin "belirtilen dizin boş değilse" başarısız olabileceğinden (zorunlu olmasa da) bahseder .

Dizinde alt dizinler yoksa, önce dizindeki rm foo/*tüm dosyaları kaldırmak için (kabuk komutu değil OpenSSH SFTP komutu anlamına gelir) kullanabilirsiniz. Ve sonra kullanın rmdir.


1
Klasik bir soru: rm -r *SFTP ile nasıl yapıyorsunuz? Bunun mümkün olduğunu düşünmüyorum.
Jari Turkia

2
@JariTurkia sftp(OpenSSH komut satırı istemcisi) ile mümkün değildir . Yeterince akıllı istemciniz varsa SFTP (protokol) ile mümkündür.
Martin Prikryl

Yeterince akıllı bir SFTP istemcisi için herhangi bir öneri için teşekkür ederiz. Düzenli olarak tamir etmem gereken ve güvenlik nedenleriyle SFTP ile sınırlı olan belirli bir kutu var. Açıkçası, bir şey yaparken OpenSSH'nin SFTP-istemcisinin sunduğu sınırlı komut seti göz önüne alındığında çok acı verici oluyor.
Jari Turkia

Sorununuz hakkında bir soru sorun ( "SFTP kullanarak klasörü özyinelemeli olarak silme" ) - Platformunuzu belirttiğinizden emin olun.
Martin Prikryl
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.