Rsync and LFTP are wonderful tools for synchronizing files. Here are various examples.
LFTP
NOTE: If certificate errors prevent you from connecting to a trusted server, you can disable these errors permanently: echo “set ssl:verify-certificate false” >> ~/.lftprc
To connect to a server and mirror it to a local directory:
lftp productionserver.com
user sangpo@productionserver.com
ls
cd public_html
lcd /var/www/devsite/
mirror
To mirror local directory to remote: mirror -R
To exclude a folder: mirror --exclude somefolder/
RSYNC
Rsync is great as it can securely synchronize data over ssh, also it is very efficient as it only transfers changed blocks and bytes of files.
Syntax: rsync options source destination
Common options:
- -v : verbose
- -r : copies data recursively (but don’t preserve timestamps and permission while transferring data
- -a : archive mode, archive mode allows copying files recursively and it also preserves symbolic links, file permissions, user & group ownerships and timestamps
- -z : compress file data
- -h : human-readable, output numbers in a human-readable format
- --exclude : items to exclude, eg.
--exclude '.git/*'
- --include : items to include
- --delete : use with extreme caution! This will delete files and folders at the destination if they do not exist at the source.
- --max-size : maximum size of files to transfer, eg.
--max-size='200k'
- --bwlimit : bandwidth limit, eg.
--bwlimit=100
- --dry-run : shows the output of your rsync command but does not actually manipulate any files
To use rsync over SSH to sync a remote site to local devsite:
rsync -avz -e ssh root@productionserver.com:/var/www/productionsite/public_html /var/www/devsite