I have server A test-lx
, and server B test2-lx
, I want to transfer files from server A to server B.
While transferring the files, I'll need to create a directory only if it does not exist. How can I check if a directory exist during the lftp conenction? How can I out several files in one command instead of doing this in two lines?
Is there an option to use find -maxdepth 1 -name DirName
?
Here is my code:
lftp -u drop-up,1Q2w3e4R ftp://ta1bbn01:21 << EOF
cd $desFolder
mkdir test
cd test
put $srcFil
put $srcFile
bye
EOF
A simple way with 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
With lftp:
#!/bin/bash
lftp -u username,password ip << EOF
cd /home/xxx/xxx/what/you/want/
put what_you_want_to_upload
bye
EOF
From the lftp manual:
-u <user>[,<pass>] use the user/password for authentication
You can use mkdir for creating a directory. And you can use the put command several times, like this:
put what_you_want_to_upload
put what_you_want_to_upload2
put what_you_want_to_upload3
And you can close the connection with bye
.
You can check if a folder exists or not like this:
#!/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
From the lftp manual:
-c <cmd> Execute the commands and exit
And you can open another connection for 'put'ting some files.
I don't know how to check a folder exists or not with one connection, but I can do that like this. Maybe you can find a better solution:
#!/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