Esistono altri comandi come scp ma per eliminare file e cartelle?


13

Sto usando SCP per copiare roba in una posizione remota. Ma a volte scp non funziona come previsto, ho scoperto che a volte la copia non si completa correttamente (possibilmente quando ho aggiunto nuovi file alla cartella che sto copiando).

Quindi voglio prima rimuovere la cartella remota e poi fare la copia per assicurarmi di avere esattamente ciò di cui ho bisogno.

Ci sono altri comandi come scp (es. Srm o smv)? O c'è un modo per rimuovere cartelle e file remoti?

Risposte:


19

Il sshcomando ti consentirà di eseguire praticamente qualsiasi comando sull'host remoto, ad es.

ssh yourlogin@remotehost rmdir somedir

dove in questo esempio somedirè relativo alla home directory del tuo login.


Grazie per quello L'unico problema che ho con il metodo è che ogni volta che lo chiami devi "accedere" di nuovo :(. Poiché il mio obiettivo è incorporato, non posso usare i tasti ssh perché tutto viene sovrascritto, quindi sto provando a fai questo in un solo comando. rsync sembra promettente, ma +1 dato che questo risponde alla domanda :))
code_fodder

5
@code_fodder dovrai accedere anche con rsync. In effetti, dovrai accedere di nuovo con tutti i metodi. Infatti, con ssh si può almeno eseguire più comandi in un colpo solo: ssh you@host bash -c "command1;command2;command3; commandN".
terdon,

@terdon Questo è un buon punto e funziona bene grazie :)
code_fodder

4

Rsync copierà un intero percorso / albero e controllerà i file già a destinazione e non si preoccuperà di copiarli se sono invariati. Se usi l'opzione --delete, eliminerà tutti i file che sono nella destinazione che non sono più alla fonte. Funziona su SSH


Stavo scherzando con rsync, come qualcuno ha menzionato questo in un altro mio post riguardante SCP. Ho rsync installato sul mio PC locale ma non sul PC remoto (un'unità incorporata). Stavo usando il comando rsync -avz -e shh root@location:/path/to/dest /path/from/hostMa non riesce dopo aver inserito la password dicendo sh: rsync: not found. Significa che rsync deve esistere sul pc remoto? Grazie!
code_fodder

1
@code_fodder sì, ha bisogno di un programma in esecuzione sul sistema remoto per dirgli cosa fare. Non è un programma di copia diretta
Luke canadese

@CanadianLuke ... accidenti :(
code_fodder

@code_fodder basta installarlo! Più utile quindi no
Canadian Luke,

A seconda della soluzione integrata, rsync può essere o non essere disponibile con qualsiasi grado di facilità ... anche se si tratta di un'impossibilità molto comune, come ho detto, a seconda della soluzione integrata. Nota: Rsync non deve essere sempre in esecuzione, ma deve essere presente per essere eseguito su richiesta.
jerm,

3

Se il tuo server SSH remoto supporta il sottosistema SFTP (la maggior parte lo fa, a meno che non sia stato esplicitamente disabilitato), puoi usare la sftpshell (o qualsiasi altro client SFTP ) per manipolare file e directory sul server remoto.

Sfortunatamente, una cosa che la sftpshell di base apparentemente non gestisce è la rimozione ricorsiva della directory; per eliminare una directory, devi prima eliminare tutto il suo contenuto. La maggior parte degli altri client (specialmente quelli grafici) in genere lo supporta.

(Non menzionate quale sia il vostro sistema operativo locale, ma se è Linux, è possibile utilizzare il file manager nativo come client SFTP della GUI puntandolo a un URL come sftp: // user @ host / path /. Per Windows, WinSCP è un client decente e FileZilla è una buona soluzione multipiattaforma.)


1

Per svuotare una directory remota (/ local), utilizzare rsync in questo modo:

rsync -r --delete-excluded --exclude=* / server:/tmp/empty_this_dir/

Fai attenzione: rimuove tutto al di sotto della destinazione specificata!


Ho provato questo, ma restituisce un errore e non rimuove la directory remota. richiesta exec non riuscita sul canale 0 rsync: connessione inaspettatamente chiusa (0 byte ricevuti finora) [mittente] errore rsync: errore inspiegabile (codice 255) su io.c (235) [mittente = 3.1.2]
xarlymg89

Sembra che ci sia un problema nell'avvio di rsync sul lato remoto o addirittura nella connessione tramite ssh. Puoi provare ssh server rsync --versiono ssh -v server rsync --versionper trovare il motivo.
bro,

Grazie per aver risposto, tuttavia ho trovato un modo per risolvere il problema, non così elegante ma con risultati simili. Ci riproverò dal momento che credo che dovrò affrontarlo di nuovo.
xarlymg89,

0

In alternativa, montare la directory remota in una locale, quindi rimuoverla rm -r /path_to_directory_to_removee infine smontare la directory fa il trucco.

Risposta originale qui: /programming//a/24650511/973919

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.