Ich benutze scp, um Sachen an einen entfernten Ort zu kopieren. Aber manchmal funktioniert scp nicht wie erwartet. Ich habe festgestellt, dass die Kopie manchmal nicht ordnungsgemäß abgeschlossen wird (möglicherweise, wenn ich dem Ordner, den ich kopiere, neue Dateien hinzugefügt habe).
Ich möchte also zuerst den Remote-Ordner entfernen und dann die Kopie durchführen, um sicherzustellen, dass ich genau das habe, was ich brauche.
Gibt es andere Befehle wie scp (zB srm oder smv)? Oder gibt es eine Möglichkeit, entfernte Ordner und Dateien zu entfernen?
ssh you@host bash -c "command1;command2;command3; commandN"
.Rsync kopiert einen gesamten Pfad / Baum und überprüft Dateien, die sich bereits am Ziel befinden, und macht sich nicht die Mühe, sie zu kopieren, wenn sie unverändert sind. Wenn Sie die Option --delete verwenden, werden alle Dateien am Ziel gelöscht, die sich nicht mehr an der Quelle befinden. Es funktioniert über ssh
quelle
rsync -avz -e shh root@location:/path/to/dest /path/from/host
aber er schlägt fehl, nachdem ich das Passwort eingegeben habesh: rsync: not found
. Bedeutet das, dass rsync auf dem Remote-PC vorhanden sein muss? Vielen Dank!Wenn Ihr Remote-SSH-Server das SFTP-Subsystem unterstützt (die meisten tun dies, sofern es nicht ausdrücklich deaktiviert wurde), können Sie mit der
sftp
Shell (oder einem anderen SFTP-Client ) Dateien und Verzeichnisse auf dem Remote-Server bearbeiten.Leider ist eine Sache, die die Basis-
sftp
Shell anscheinend nicht erledigt , das rekursive Entfernen von Verzeichnissen. Um ein Verzeichnis zu löschen, müssen Sie zuerst den gesamten Inhalt löschen. Die meisten anderen Clients (insbesondere grafische) unterstützen dies jedoch normalerweise.(Sie erwähnen nicht Ihr lokales Betriebssystem, aber wenn es sich um Linux handelt, können Sie Ihren nativen Dateimanager als GUI-SFTP-Client verwenden, indem Sie ihn auf eine URL wie sftp: // user @ host / path / verweisen . Bei Windows WinSCP ist ein anständiger Client, und FileZilla ist eine gute plattformübergreifende Lösung.)
quelle
Verwenden Sie rsync wie folgt, um ein Remote-Verzeichnis (/ local) zu leeren:
Seien Sie vorsichtig - es wird alles entfernt, was unter dem angegebenen Ziel liegt!
quelle
ssh server rsync --version
oderssh -v server rsync --version
den Grund zu finden.Alternativ können Sie das Remote-Verzeichnis in ein lokales
rm -r /path_to_directory_to_remove
Verzeichnis einhängen , es dann mit entfernen und schließlich das Verzeichnis umhängen.Ursprüngliche Antwort hier: /programming//a/24650511/973919
quelle