Próbuję usunąć katalog z dużą ilością plików i folderów z mojego prywatnego miejsca na serwerze. Loguję się przez SFTP w porządku; Mogę uzyskać dostęp do całego katalogu bez problemów; Mogę nawet usunąć pojedyncze pliki za pomocą rm. Ale zajmie mi to wieczność - naprawdę chciałbym po prostu zrobić rmdir w najwyższym folderze, który chcę usunąć. Ale kiedy to robię, rozumiem
Nie można usunąć katalogu: błąd
Czy są jakieś przemyślenia na temat tego, co robię źle?
Dziękuję bardzo, Sam
Odpowiedzi:
Z mojego doświadczenia wynika, że rmdir woli pracować nad pustym katalogiem. Jeśli próbujesz usunąć katalog
foo
, zrobiłbym:źródło
rm foo/*
nie działał, ponieważfoo/
zawierał niepuste katalogi. Na szczęściersync
pozwolono mi również, a ja utworzyłem lokalnie pusty katalog, a następniersync -rv --delete empty_local_dir/ host.example.org:/foo/
usunąłem wszystko ze zdalnegofoo/
katalogu. Następnie można byłormdir foo
za pośrednictwem SFTP.Nie określiłeś, jakiego klienta SFTP używasz. Więc zakładam OpenSSH SFTP (
sftp
).Polecenie
rmdir
w kliencie OpenSSH SFTP mapuje bezpośrednio naSSH_FXP_RMDIR
żądanie protokołu SFTP. Specyfikacja SFTP dla wersji 3 (ta używana przez OpenSSH) w szczególności wspomina, żeSSH_FXP_RMDIR
operacja może się nie powieść, „jeśli określony katalog nie jest pusty” (choć wydaje się, że nie jest to wymagane ).Jeśli katalog nie ma podkatalogów, możesz użyć
rm foo/*
(to znaczy polecenia OpenSSH SFTP, a nie polecenia powłoki), aby najpierw usunąć wszystkie pliki z katalogu. A potem użyjrmdir
.źródło
rm -r *
radzisz z SFTP. Nie sądzę, żeby to było możliwe.sftp
(klientem wiersza poleceń OpenSSH). Jest to możliwe dzięki SFTP (protokół), jeśli masz wystarczająco inteligentnego klienta.