Zitat:
Original geschrieben von justsmile
@sloter:
Geniale Idee!
Mein Traum-Szenario ist:
Start: scpmove
Verbindung: zu Remoteserver
Remote: Komprimieren der Dateien mit Unterverzeichnissen
Verbindung: übertragen der kompr. Datei
Lokal: Entpacken der Datei in Unterverzeichnisse
Remote: löschen der kompr. Datei / der Dateien
noch besser wäre: scpmove user@remote:/verzeichnis/* zielverzeichnis
und der rest geschieht vollautomatisch und mittels ssh-schlüssel!
Wundert mich, dass das noch niemand implementiert/programmiert hat
|
weils mich grad interessiert hat, hab ich ein bissl gebastelt
was hältst du davon?
aufruf ist:
./scpmove $USER $SERVER $REMOTE_DIR $LOCAL_DIR $TAR_FILENAME
REMOTE_DIR ist _OHNE_ "*" anzugeben, das macht das script!
Code:
#!/bin/sh
# v1, valo
# Username fuer die SSH/SCP Verbindung
USER=$1
# Servername von dem kopiert und geloescht werden soll
SERVER=$2
# Remote Verzeichnis, dessen Inhalt getart/kopiert und geloescht gehoert.
# Der Pfad ist OHNE einem * anzugeben!
#RDIR=$HOME/remote
RDIR=$3
# Lokales Verzeichnis in welches der Inhalt des tar-files entpackt wird.
#LDIR=$HOME/test
LDIR=$4
# Dateiname des tar-files
#TARFILE=test.tar
TARFILE=$5
# tar Aufruf am Server
TCMD="tar -cf $TARFILE $RDIR/* 2>1 >/dev/null"
# Kommando um die Dateien am Server zu leoschen
DELCMD="rm -r $TARFILE $RDIR/*"
# SSH Keys fuer die Verbindung sind unbedingt empfehlenswert, da ansonsten
# 3x das Passowrt eingeben werden muss.
# Dieses Script erstellt aus dem Verzeichnis $RDIR am Server $SERVER ein
# tar-file mit dem Namen $TARFILE. Als Benutzername fuer die SSH/SCP
# Verbindungen wird $USER verwendet.
# Anschliessend wird $TARFILE zum lokalen Computer mittels SCP kopiert
# und die Dateien aus $RDIR sowie die Datei $TARFILE auf $SERVER geloescht.
# $TARFILE wird lokal in das Verzeichnis $LDIR entpackt und anschliessend
# geloescht.
echo connect make tar
ssh -2 -l $USER $SERVER $TCMD
echo download tar
scp -q -2 $USER\@$SERVER:$TARFILE $LDIR/$TARFILE
echo remove remote files
ssh -2 -l $USER $SERVER $DELCMD
echo extract local tar
cd $LDIR
tar -xf $TARFILE
echo remove local tar
rm -f $LDIR/$TARFILE
exit 0
ich werd das noch ein bissl verfeinern, aber es funktioniert bei mir auf alle fälle...