rsync 简单使用

安装:

# Debian
$ sudo apt-get install rsync
# Red Hat
$ sudo yum install rsync
# Arch Linux
$ sudo pacman -S rsync

使用:
本机使用 rsync 命令时,可以作为 cp 和 mv 命令的替代方法,将源目录同步到目标目录。

# -r 递归,必选项
rsync -r source destination
rsync -r source1 source2 destination

-a 参数可以替代 -r ,除了可以递归同步以外,还可以同步元信息(比如修改时间、权限等)

# 目标目录如果不存在,会自动创建,把 source 完整复制到 destination 下,即 destination/source
rsync -a source destination
# 把 source 下的目录及文件同步到 destination 下,即 destination/***
rsync -a source/ destination

-n ,–dry-run

–delete,默认 rsync 只会把源目录全部复制到目标目录,不管两个目录是否相同;如果目标是作为 源的镜像,使用该参数可以保持两者目录结构相同,会删除只存在于目标目录、不存在于源目录的文件。

rsync -av --delete source/ destination

–exclude,排除,可使用正则、shell大括号,或者多个 --exclude 参数

rsync -av --exclude '*.txt' source/ destination
rsync -av --exclude='*.txt' source/ destination
rsync -av --exclude 'dir1/*' source/ destination
rsync -av --exclude 'file1.txt' --exclude 'dir1/*' source/ destination
rsync -av --exclude={'file1.txt','dir1/*'} source/ destination

也可以从文件读取要排除的文件,类似于 git ignore

rsync -av --exclude-from='exclude-file.txt' source/ destination

–include,表示必须要同步的文件,一般会和 --exclude 结合使用

远程同步:
默认情况下,使用 ssh 协议

# 本地内容同步到服务器
rsync -av source/ username@remote_host:destination
# 服务器内容同步到本地
rsync -av username@remote_host:source/ destination

如果 ssh 有额外的参数,如端口,需要使用 -e

rsync -av -e 'ssh -p 2234' source/ user@remote_host:/destination

增量备份
rsync 的最大特点就是它可以完成增量备份,也就是默认只复制有变动的文件,也能实现对比基准目录来进行备份。

# 以 compare path为基准,将 source path 与基准目录进行比较,并将变动文件复制到 target path
rsync -a --delete --link-dest /compare/path /source/path /target/path
# 使用 rsync 增量备份用户家目录
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail

readonly SOURCE_DIR="${HOME}"
readonly BACKUP_DIR="/mnt/data/backups"
readonly DATETIME="$(date '+%Y-%m-%d_%H:%M:%S')"
readonly BACKUP_PATH="${BACKUP_DIR}/${DATETIME}"
readonly LATEST_LINK="${BACKUP_DIR}/latest"

mkdir -p "${BACKUP_DIR}"

rsync -av --delete \
  "${SOURCE_DIR}/" \
  --link-dest "${LATEST_LINK}" \
  --exclude=".cache" \
  "${BACKUP_PATH}"

rm -rf "${LATEST_LINK}"
ln -s "${BACKUP_PATH}" "${LATEST_LINK}"

每次同步根据日期生成新目录 ${BACKUP_DIR}/${DATETIME},并将 ${LATEST_LINK} 软连接指向该目录。下次备份时,将 ${LATEST_LINK} 作为基准,生成新的备份目录,最后再把软连接指向 ${LATEST_LINK}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

某呆啊

赏个糖吃吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值