Rsync(增量复制)
rsync是一个高效的文件复制工具,可以在本地或远程系统之间同步文件和目录。它使用类似于diff算法的技术来比较源和目标文件,仅传输两个文件之间的差异,从而减少传输数据的量。rsync 还支持压缩传输、加密传输、增量备份等功能,使其在备份和同步文件时非常有用。
使用时,本地电脑和远程服务器都要安装rsync客户端
rsync -avzh --progress -e 'ssh -p 22' --delete --exclude=.DS_Store ~/abc/ user@server:/path/to/abc/
-a
使用归档模式同步文件.它可以确保同步的文件保持了原始的属性、权限、时间戳等信息,使得同步后的目标文件和原始文件完全一致.此外,归档模式还支持递归同步子目录和链接文件,使得同步更为方便和完整。如果不使用归档模式,那么 rsync 可能会忽略某些文件的属性、权限、时间戳等信息,导致同步后的文件可能与原始文件不一致。此外,如果不使用递归同步子目录和链接文件的选项,可能会导致同步不完整,有些文件被漏掉了-v
verbose-z
compress file data during the transfer-h
output numbers in a human-readable format--progress
输出进度条-e
rsync默认使用ssh进行连接--delete
目标文件夹中,如果有些文件在源目录中不存在,就删除--exclude
将某些文件排除在外,不进行同步- --exclude=PATTERN exclude files matching PATTERN
- --exclude-from=FILE read exclude patterns from FILE 例如从.gitignore中读取需要排除的文件列表
~/abc/
表示要同步的目录user@server:/path/to/abc/
远程服务器的用户名、服务器地址、文件路径
scp
# 同步文件夹需要-r参数
scp -r /srcdir root@[服务器域名或IP]:/home/
# 同步文件不需要-r参数
scp file root@[服务器域名或IP]:/home/
lsyncd
settings {
logfile = "/tmp/lsyncd.log",
statusFile = "/tmp/lsyncd.status",
statusInterval = 20,
nodaemon = true,
}
sync {
default.rsync,
source = "DIRNAME",
target = "DIRNAME",
rsync = {
binary = "/usr/local/bin/rsync",
archive = true,
compress = true,
cvs_exclude = true,
exclude
excludeFrom
verbose
},
ssh = {
port = 1234
}
}
delete
startusInterval