Wie kann tar das Archiv mit sftp oder ftp auf einem Remotecomputer speichern?


10

Ich möchte einige meiner sehr wichtigen Daten auf einem Remote-Computer sichern.
Derzeit speichere ich es nur mit diesem Befehl auf meinem lokalen Computer:tar -cvjf ~/backups/Backup.tar.bz2 ~/importantfiles/*

Ich würde es vorziehen, keinen anderen Befehl zu verwenden, um ihn auf den Remotecomputer zu übertragen, was bedeutet, dass ich nur möchte, dass dieser Befehl aktualisiert wird, damit er die Daten auf den Remotecomputer übertragen kann.

Dies ist so konzipiert, dass es sich später in einem Skript befindet, das von selbst ausgeführt werden soll, was bedeutet, dass jede Art von erforderlichen Benutzereingaben es völlig durcheinander bringen würde!

Etwas wie

tar -cvjf sftp://user:pwassword@host/Backup.tar.bz2 ~/importantfiles/*
tar -cvjf  ftp://user:pwassword@host/Backup.tar.bz2 ~/importantfiles/*

es wäre perfekt! (Keine Rohre (etc.), nur ein Befehl!)


Ist es muß sein ftp? Sie haben keinen sshZugriff auf diese Maschine?
Terdon

Ich habe keinen SSH-Zugriff auf die Maschine. Es ist nur ein Backup-Server, den ich miete. Also ja, es muss ftp oder sftp sein.
BrainStone

@BrainStone SFTP ist Teil von SSH
Kurtm

Ich kenne. Es ist jedoch so eingerichtet, dass jede SSH-Verbindung sofort geschlossen wird. SFTP funktioniert jedoch. Ich weiß, dass es ein seltsames Setup ist, aber so ist es nun mal.
BrainStone

1
SFTP ist verfügbar, wenn SSH nicht verfügbar ist, wenn der interne SFTP-Server verwendet wird und Ihre Shell auf / sbin / nologin eingestellt ist.
Gregg Leventhal

Antworten:


15

Für SSH:

tar czf - . | ssh remote "( cd /somewhere ; cat > file.tar.gz )"

Für SFTP:

outfile=/tmp/test.tar.gz
tar cvf $outfile . && echo "put $outfile" | sftp remote:/tmp/
Connecting to remote...
Changing to: /tmp/
sftp> put /tmp/test.tar.gz
Uploading /tmp/test.tar.gz to /tmp/test.tar.gz
/tmp/test.tar.gz

Ein weiteres SFTP:

outfile=/tmp/test.tar.gz
sftp -b /dev/stdin remote >/dev/null 2>&1 << EOF
cd /tmp
get $outfile
bye
EOF
echo $?
0

Wie genau würde ich das verwenden? Ich meine, wie kann ich festlegen, welche Dateien im Teerball enthalten sein sollen? Und wo würde ich das Passwort setzen? Und wie richte ich es so ein, dass ich den Fingerabdruck des Hosts nicht akzeptieren muss?
BrainStone

Bitte erfahren Sie mehr über ssh, man ssh, man ssh-agent, man ssh_config und beantworten Sie alle Ihre Zweifel. Welche Dateien Sie lokal mit tar-Argumenten definieren, wird dann über ssh an den Remote-Host weitergeleitet und die Ausgabe in die Datei umgeleitet.
Jirib

Ist es möglich, es ohne Rohr zu tun?
BrainStone

Dies kann auch nicht funktionieren , weil es braucht SFTP (sein kein ssh - Zugang ) oder ftp
BrainStone

Für ftp siehe man lftp. Wenn Sie kompliziertere Szenarien benötigen, verwenden Sie 'sftp -b' und haben Sie eine Datei mit Befehlen oder verwenden Sie 'hier Dokumente' (<< EOF).
Jirib

3

Tar spricht weder FTP noch SFTP. Das ist nicht seine Aufgabe. Sie können dies nicht allein mit Teer tun. Die Verwendung geeigneter Tools für jeden Job und deren Kombination mit der Shell ist die normale Vorgehensweise auf Unix-Systemen.

Die naheliegendste Lösung besteht darin, das Archiv lokal zu erstellen und dann auf den Remotecomputer zu kopieren.

Wenn Sie das Archiv nicht lokal erstellen möchten, weil Sie nicht genügend Speicherplatz haben, können Sie eine Named Pipe erstellen, tar in diese Pipe schreiben lassen und einen (e) FTP-Client finden, der aus Pipes lesen kann. Leider weigert sich sftp zu puteiner Pipe. Einige FTP-Clients funktionieren, z. B. lftp:

mkfifo f
tar -cvjf f ~/importantfiles/* &
sleep 2
lftp -f - <<EOF
open user@host
put f Backup.tar.bz2
EOF
wait
rm f

Geben Sie Ihr FTP-Passwort ein ~/.netrc.

Alternativ gibt es eine Möglichkeit, Ihren tar-Befehl direkt auf dem Remote-Server zu speichern, Sie benötigen jedoch eine vorherige Einrichtung. Hängen Sie den Remote-Server über SSHFS oder curlftpfs ein .

mkdir -p ~/net/host
sshfs host: ~/net/host
tar -cvjf ~/net/host/Backup.tar.bz2 ~/importantfiles/*
fusermount -u ~/net/host
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.