perché sftp rmdir non funziona?


18

Sto cercando di rimuovere una directory con molti file e cartelle dal mio spazio del server privato. Sto accedendo tramite SFTP bene; Posso accedere all'intera directory senza problemi; Posso persino cancellare singoli file con rm. Ma questo mi richiederebbe per sempre - quindi mi piacerebbe davvero fare semplicemente rmdir sulla cartella più alta che voglio rimuovere. Ma quando lo faccio, ottengo

Impossibile rimuovere la directory: errore

Qualche idea su cosa potrei fare di sbagliato?

Grazie mille, Sam


Se puoi SFTP in quel server, puoi SSH? In tal caso, è possibile utilizzare una versione più potente del comando RM: rm -rf foo / *
Chris

Risposte:


21

Nella mia esperienza, rmdir preferisce lavorare su una directory vuota. Se stai cercando di eliminare la directory foo, farei:

$rm foo/*
$rmdir foo

2
Modificato perché il flag -rf non esiste per rm in sftp.
Chris,

1
SSH che stava per fare rm -rf era la risposta ovvia. Ho provato rm -rf su SFTP ma non ha potuto accettare -rf, come hai sottolineato. (Anche il trucco con i caratteri jolly in SFTP non ha funzionato.) Comunque, grazie mille per il vostro aiuto!
user1451632

È divertente. rm foo / * ha lavorato per me in SFTP. Ad ogni modo, sono contento che tu l'abbia risolto!
Chris,

Tuttavia non rimuove le directory in modo ricorsivo. È già abbastanza buono, ma non ancora perfetto :-)
Krzysztof Jabłoński

Aveva lo stesso problema e rm foo/*non funzionava perché foo/conteneva directory non vuote. Fortunatamente rsyncanche a me è stato permesso e ho creato una directory vuota localmente e quindi ho usato rsync -rv --delete empty_local_dir/ host.example.org:/foo/per rimuovere tutto sotto la foo/directory remota . Successivamente è stato possibile rmdir footramite SFTP.
ckujau,

5

Non hai specificato quale client SFTP stai utilizzando. Quindi presumo OpenSSH SFTP ( sftp).

Il comando rmdirnel client SFTP OpenSSH si associa direttamente alla SSH_FXP_RMDIRrichiesta del protocollo SFTP. Le specifiche SFTP per la versione 3 (quella utilizzata da OpenSSH) specificano che l' SSH_FXP_RMDIRoperazione potrebbe non riuscire, "se la directory specificata non è vuota" (sebbene non sembri obbligarla).

Se la directory non ha sottodirectory, è possibile utilizzare rm foo/*(ovvero comando SFTP OpenSSH, non comando shell) per rimuovere prima tutti i file nella directory. E poi usa rmdir.


1
Una domanda classica è: come si fa rm -r *con SFTP. Non penso sia possibile.
Jari Turkia,

2
@JariTurkia Non è possibile con sftp(client da riga di comando OpenSSH). È possibile con SFTP (protocollo), se si dispone di un client abbastanza intelligente.
Martin Prikryl,

Gradirei qualsiasi suggerimento per un client SFTP abbastanza intelligente. C'è una scatola particolare, che devo armeggiare regolarmente ed è limitata a SFTP per motivi di sicurezza. Ovviamente, quando si fa qualcosa, diventa molto doloroso, dato il set limitato di comandi offerti dal client SFTP di OpenSSH.
Jari Turkia,

Fai una domanda sul tuo problema specifico ( "Come eliminare ricorsivamente la cartella usando SFTP" ) - Assicurati di specificare la tua piattaforma.
Martin Prikryl,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.