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.