Keeping your website updated is tedious job,especially when you have lot of files,which you edit quite often.And having to do the such work over ftp makes it worse.
In this article we’ll use a command line based file transfer program lftp(http://lftp.yar.ru/) written by Alexander .V. LukyanovUsing lftp on Command Line
Now you have a local directory on your computer where you keep all your website files(/home/joe/site_files).Let upload these files to your remote webserver directory using lftp on command line.First lets connect to your hosting service providers webserver with username and password.
$ lftp -u username ftp.hostingcompany.net
Password:
The lftp program will prompt for the password,type your secret password and you will be logged in.
Now issue the ‘lcd’ command to change directory to local directory where your all website files reside.
lftp username@ftp.hostingcompany.net:~> lcd /home/joe/site_files
lcd ok, local cwd=/home/joe/site_files
Now use the lftp mirror built-in’s reverse option (-R) of lftp to
upload all files local files into remote directory on the webserver.
lftp username@ftp.hostingcompany.net:~> mirror -R
Total: 12 directories, 36 files, 0 symlinks
Modified: 13 files, 0 symlinks
You can use “ mirror -R —only-newer “ command if you want only new files to uploaded.Once the upload is finished lftp will print out a report.Now you can end the connection by typing quit.
lftp username@ftp.hostingcompany.net:~> quit
Running lftp in a Script
Now that we have seen lftp in action.Let run all the commands from script instead.Luke Vanderfluit
lftp -u username,password ftp.hostingcompany.net <<EOF
cd / # remote directory on webserver
lcd /home/joe/site_files # local directory on your computer
mirror -R # Upload the files to remote directory
quit 0 # Drop the connection
EOF
Save all the commands in a file ‘upload_mysite’ and make it executable with ‘chmod +x upload_mysite’.Run the script by typing ‘./upload_mysite’ on the command line.As your username and password are stored it file,its a better not let anyone else to view it.Changing file permissions with ‘chmod go-rwx upload_mysite’.
Maintaining Multiple Websites
Running lftp from script is not a good idea if you have to maintain multiple sites.Instead you can use lftp’s ‘-f’ option.You can store settings of different websites into separate files.Suppose you have two websites site1 and site2.
The settings of the both the sites are stored in files ‘mysite1.lftp’ and ‘mysite2.lftp.
#####mysite1.lftp#######################
open ftp.myisp.net
user username password
lcd /usr/joe/site1_files
mirror -R
exit #########################################
#####mysite2.lftp#######################
open ftp.hostingcompany.com
user username password
lcd /usr/local_site_location
mirror -R
exit #########################################
To update site1, we will run lftp with ‘-f’ option.
$ lftp -f mysite1.lftp
And to update the next website.
$ lftp -f mysite2.lftp
Some other usefull features provided by ‘mirror’ built-in are the —parallel = N where in it will use N simultaneous connections to upload the files,this speeds up the upload considerably.If you want to exclude some files from being uploaded use (- x , – X) . And —delete to remove those files which are not present in local directory.
lftp can also be run as a cron job . Jani Reinikainen
References
lftp manual page [http://lftp.yar.ru/lftp-man.html ]
lftp FAQ [http://lftp.yar.ru/FAQ ]
lftp Download page [http://lftp.yar.ru/get.html ]
thanks a lot! will it go recursively to upload the sub-folders as well??
ReplyDeleteand how to exclude multiple files?
regards,
Ben, you can exclude folders and files using the lftp -X option. Please do refer to lftp manual for more detailed explanation.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDelete