还没写完,但是先发一份。
首先,命令都是这种形式的,参数是可选的,SRC
可以有一个或多个,不需要进行区分,最后一个参数永远是 DEST
。
rsync [OPTION]... SRC [SRC]... DEST
传输/同步 - 最常用命令
rsync -avz --partial --append-verify --progress [src...] [dest]
-a
:归档模式(递归,保留权限等)-v
:详细模式,输出更多信息-z
:压缩传输,节省带宽--partial
:保留部分传输的数据--append-verify
:验证追加的文件数据--progress
:显示传输进度
同主机传输,省略了压缩和分块
rsync -aAXv --progress [src...] [dest]
删除 - 删除目标中不存在的文件
# 去掉 --dry-run 执行删除操作
rsync -av --delete --dry-run [src] [dest]
--delete
:删除目标中不再存在于源的文件--dry-run
:仅显示将要执行的操作,实际删除操作需要去掉此选项
增量+删除
同步改动到目标目录
# 去掉 --dry-run 执行删除操作
rsync -aAXvz --delete --partial --append-verify --progress --dry-run [src] [dest]
双向同步
不适合多人场景,有更好的解决方案。
# 先拉取再同步
rsync -aAXvz --partial --append-verify --progress [dest] [src]
rsync -aAXvz --delete --partial --append-verify --progress [src] [dest]
使用 MD4 校验和
# 默认通过文件大小和修改时间判断,强制使用 checksum 更精准但耗时会大幅增加
rsync -av --checksum --update --partial --append-verify --progress [src] [dest]
--checksum
:通过计算文件的校验和判断文件是否需要同步,精度较高,但速度较慢--update
:只更新源文件比目标文件新的文件
增量备份
rsync -a source/ /backup/$(date +%F)/
- 使用
date +%F
生成日期作为备份目录名,便于按日期管理备份
更全的参数
rsync -avvvzh --update --partial --append-verify --progress --stats --exclude='node_modules/' [src] [dest]
-h
:以人类可读的方式显示文件大小--stats
:传输结束时额外输出一组信息--exclude='node_modules/'
:排除所有名为node_modules
的目录(实际是排除所有路径中包含node_modules
的项)
### 其他
后台运行并输出错误到文件
[command] > sync.log 2>&1
没有评论