webentwicklung-frage-antwort-db.com.de

Übertragen Sie Dateien mit LFTP im Bash-Skript

Ich habe Server A test-lx und Server B test2-lx, ich möchte Dateien von Server A auf Server B übertragen. Beim Übertragen der Dateien muss ich nur ein Verzeichnis erstellen, wenn es nicht vorhanden ist. Wie kann ich das überprüfen? Wenn während der LFTP-Verbindung ein Verzeichnis vorhanden ist? Wie kann ich mehrere Dateien in einem Befehl ausgeben, anstatt dies in zwei Zeilen auszuführen. Gibt es eine Option zur Verwendung von find -maxdepth 1 -name DirName

Hier ist mein Code:

lftp -u drop-up,1Q2w3e4R   ftp://ta1bbn01:21 << EOF

cd $desFolder
mkdir test
cd test
put $srcFil
put $srcFile

bye 
EOF
5
user3502786

Einfacher Weg mit ftp:

#!/bin/bash

ftp -inv ip << EOF
user username password

cd /home/xxx/xxx/what/you/want/
put what_you_want_to_upload

bye
EOF

Mit lftp:

#!/bin/bash

lftp -u username,password ip << EOF

cd /home/xxx/xxx/what/you/want/
put what_you_want_to_upload

bye
EOF

Vom lftp-Handbuch:

-u <user>[,<pass>]  use the user/password for authentication

Sie können mkdir verwenden, um ein Verzeichnis zu erstellen. Und Sie können den Befehl put mehrmals wie folgt verwenden:

put what_you_want_to_upload
put what_you_want_to_upload2
put what_you_want_to_upload3

Und Sie können die Verbindung mit bye schließen.


Sie können prüfen, ob ein Ordner vorhanden ist oder nicht:

#!/bin/bash
checkfolder=$(lftp -c "open -u user,pass ip; ls /home/test1/test1231")

if [ "$checkfolder" == "" ];
then
echo "folder does not exist"
else
echo "folder exist"
fi

Vom lftp-Handbuch:

-c <cmd>            execute the commands and exit

Und Sie können eine andere Verbindung öffnen, um einige Dateien abzulegen.


Ich weiß nicht, wie der Ordner vorhanden ist oder nicht mit einer Verbindung, aber ich kann das so machen. Vielleicht finden Sie eine bessere Lösung:

#!/bin/bash
checkfolder=$(lftp -c "open -u user,pass ip; ls /home/test1/test2")

if [ "$checkfolder" == "" ];
then

lftp -u user,pass ip << EOF

mkdir test2
cd test2
put testfile.txt
bye
EOF

else

echo "The directory already exists - exiting"

fi
14
phe

Ich habe die gleiche grundlegende Gliederung für die Kodierung wie phe verwendet. Ich habe jedoch festgestellt, dass bei Verwendung von ls/foldername "Ordner nicht vorhanden" ausgegeben wird, wenn der Ordner leer ist. Um das zu lösen verwende ich

#!/bin/bash
checkfolder=$(lftp -c "open -u user,pass ip; ls | grep /test1231")

if [ "$checkfolder" == "" ];
then
echo "folder does not exist"
else
echo "folder exists"
fi

Bitte beachten Sie, dass dies nur funktioniert, wenn sich der Ordner im Stammverzeichnis befindet. Für Unterverzeichnisse in einem Ordner sollte Folgendes funktionieren.

#!/bin/bash
checkfolder=$(lftp -c "open -u user,pass ip; find | grep home/test1/test1231")

if [ "$checkfolder" == "" ];
then
echo "folder does not exist"
else
echo "folder exists"
fi
1
edf242