在Linux中,如何使用rsync进行增量备份?

简介: 在Linux中,如何使用rsync进行增量备份?

在Linux中,rsync是一款强大的文件同步工具,它支持本地和远程文件系统之间的数据同步,并且特别擅长增量备份,因为它只会复制源目录与目标目录之间发生改变的内容,从而极大地节省了网络带宽和存储空间。下面是如何使用rsync进行增量备份的详细步骤:

1. 基础用法举例
本地增量备份
rsync -av --delete /source/directory /destination/directory
  • -a:归档模式,相当于 -rlptgoD,保持符号链接、文件权限、属主、属组、mtime等属性不变。
  • -v:详细输出模式,显示正在进行的操作。
  • --delete:删除目标目录中源目录不再存在的文件或子目录,保持两者同步。

这个命令会在 /destination/directory 中创建 /source/directory 的增量备份,仅复制自上次备份以来有变化或新增的文件。

远程增量备份
rsync -avz --delete user@remote_host:/source/directory /local/destination/
  • -z:启用压缩,减小传输期间的数据量。
  • user@remote_host:/source/directory 是远程服务器上需要备份的目录。

这个命令会通过SSH连接远程服务器,将远程服务器上的目录内容增量备份到本地机器的一个目录中。

2. 定期增量备份

通常,我们会借助cron定时任务来定期执行增量备份。例如,每日凌晨1点执行一次备份:

  1. 编辑cron计划任务(对于root用户,使用crontab -e;对于普通用户,使用crontab -e -u [username])。
  2. 添加一行类似这样的定时任务:
0 1 * * * rsync -avz --delete user@remote_host:/source/directory /local/backup/daily/

这意味着每天的凌晨1点,rsync将会执行一次增量备份。

3. 高级选项和注意事项
  • 硬链接备份:rsync可以配合硬链接技术(如rsnapshot工具)实现多版本备份,这样在连续几次备份后,相同未改变的文件只会存储一份,节省存储空间。
  • 排除文件和目录:可以通过 --exclude=PATTERN 参数排除不需要备份的文件或目录。
  • 备份一致性:对于数据库等需要一致性的备份,应该在备份之前先锁定数据库或获取一致性快照,然后再执行rsync备份。
  • 带宽限制:如果需要在网络繁忙时段限制rsync的带宽使用,可以使用 --bwlimit=KBPS 参数设置最大传输速率。
  • 密码less登录:如果经常需要执行远程备份,为了避免每次手动输入密码,可以设置SSH密钥对验证以实现无密码登录。
  • 增量备份脚本:对于更复杂的备份策略,可以编写包含额外逻辑的shell脚本来控制rsync的行为,比如在备份前后执行清理、验证等操作。
相关文章
|
5月前
|
Linux
在Linux中使用rsync进行备份时如何排除文件和目录?
在Linux中使用rsync进行备份时如何排除文件和目录?
274 1
在Linux中使用rsync进行备份时如何排除文件和目录?
|
5月前
|
运维 监控 Linux
Linux Rsync服务详解(二)——Rsync服务实战
Linux Rsync服务详解(二)——Rsync服务实战
108 1
|
6天前
|
安全 Linux Shell
Linux | Rsync 命令:16 个实际示例(上)
Linux | Rsync 命令:16 个实际示例(上)
20 0
Linux | Rsync 命令:16 个实际示例(上)
|
2月前
|
安全 Linux 数据安全/隐私保护
在Linux中,使用rsync服务模式时,如果指定了⼀个密码文件,那么这个密码文件的权限应该设置成多少才可以?
在Linux中,使用rsync服务模式时,如果指定了⼀个密码文件,那么这个密码文件的权限应该设置成多少才可以?
|
2月前
|
Linux Shell 网络安全
在Linux中,rsync同步时,如何删除目标数据多出来的数据,即源上不存在,但目标却存在的文件或者目录?
在Linux中,rsync同步时,如何删除目标数据多出来的数据,即源上不存在,但目标却存在的文件或者目录?
|
2月前
|
安全 Linux 网络安全
在Linux中,使用rsync同步数据时,假如采用的是ssh方式,并且目标机器的sshd端端并不是默认的22端口,该如何做?
在Linux中,使用rsync同步数据时,假如采用的是ssh方式,并且目标机器的sshd端端并不是默认的22端口,该如何做?
|
2月前
|
Linux
在Linux中,rsync同步数据时,如果目标⽂件比源⽂件还新,则忽略该文件,如何做?
在Linux中,rsync同步数据时,如果目标⽂件比源⽂件还新,则忽略该文件,如何做?
|
2月前
|
Linux
在Linux中,rsync 同步数据时,如何过滤出所有.txt的文件不同步?
在Linux中,rsync 同步数据时,如何过滤出所有.txt的文件不同步?
|
2月前
|
Linux
在Linux中,Rsync 同步时,如果要同步的源中有软连接,如何把软连接的目标文件或者目录同步?
在Linux中,Rsync 同步时,如果要同步的源中有软连接,如何把软连接的目标文件或者目录同步?
|
4月前
|
网络协议 Linux Shell
【权限提升】Linux系统&Docker挂载&Rsync未授权&Sudo-CVE&Polkit-CVE
【权限提升】Linux系统&Docker挂载&Rsync未授权&Sudo-CVE&Polkit-CVE