Ich möchte den Befehl verwenden, put
um eine laufende Dateiübertragung sftp
nach einer unterbrochenen Pipe wiederherzustellen.
Dateien sollten nur hochgeladen werden, wenn die Zielgröße kleiner ist als die der Quelldatei.
Ich habe keinen ssh
Zugriff, also rsync
ist das keine Option.
Von demSFTP-Handbuch, ich habe versucht, die Flags anzugeben put -a -r source_dir/
. Allerdings habe ich bei der Übertragung Fehlermeldungen erhalten.
- Fehler:
Couldn't stat remote file: No such file or directory
für Dateien nicht auf dem Server - Fehler:
Destination file bigger or same size as source file
für Dateien, die sich bereits auf dem Server befinden und eigentlich nicht übertragen werden sollten
Reales Beispiel für den 1. Fehler:
Uploading of file /Volumes/Seagate/amphioxus/raw_h5/9N0Bp0b0_m150427_041848_42182_c100810932550000001823181110291543_s1_p0.2.bax.h5.gz to /deposits/Pacbio_amphioxus/raw_h5/9N0Bp0b0_m150427_041848_42182_c100810932550000001823181110291543_s1_p0.2.bax.h5.gz failed!
Couldn't stat remote file: No such file or directory
Natürlich existiert die Datei im Quellverzeichnis.
Gibt es hierfür Lösungen?
Antwort1
Dies ist zwar keine Lösung, ein Workaround besteht jedoch darin, den Server lokal zu mounten und dann einfach die Daten zu kopieren.
sshfskann zum Mounten des Remote-Verzeichnisses verwendet werden:
sudo sshfs -o allow_other,default_permissions [email protected]:/ /mnt/local_directory
Dann benutze
cp -ru
Dabei werden die im gemounteten Remote-Verzeichnis vorhandenen Dateien durch die fehlenden ersetzt.
Antwort2
Die beste Lösung besteht darin, einen Administrator des Remote-Systems zu bitten, Ihnen ssh
Zugriff und Nutzung zu gewähren rsync
oder ggf. nur rsync
den Zugriff zu gewähren, wenn dies möglich ist.
sftp
kann Dateien ablegen (und abrufen), jedoch keine Verzeichnisse (Verzeichnisbäume mit deren Inhalt).
Eine Problemumgehung besteht darin,Erstellen Sie ein Tarball [komprimiertes] Tarfile und legen Sie es mitsftp
.
tar -cvzf filename.tar.gz source_dir/
Wenn Sie es wiederherstellen müssen, erhalten Sie es mit sftp
dem Inhalt überprüfen
tar -tvf filename.tar.gz
Stellen Sie sicher, dass Sie sich im richtigen Verzeichnis befinden, und extrahieren Sie aus dem Tarball.
tar -xvf filename.tar.gz
Antwort3
Die Option „Verwenden“ -a
von sftp man sftp
besagt, dass sftp angewiesen wird, „zu versuchen, unterbrochene Übertragungen fortzusetzen, anstatt vorhandene teilweise oder vollständige Kopien von Dateien zu überschreiben. Wenn sich die teilweisen Inhalte von den übertragenen unterscheiden, ist die resultierende Datei wahrscheinlich beschädigt.“