个人计算机或服务器上的备份对于防止永久性数据丢失始终很重要。因此,了解不同的备份工具非常重要,特别是对于处理大量企业级数据甚至在个人计算机上的系统管理员来说。
持续备份计算机上的数据始终是一个好习惯,可以通过手动或配置为自动完成。许多备份工具具有不同的功能,允许用户配置备份类型、备份时间、备份内容、记录备份活动等等。
在本文中,我将介绍Linux下3种备份方式,或者说介绍3个出色的备份工具。
方式一:rsync
它是一种深受 Linux 用户(尤其是系统管理员)欢迎的命令行备份工具。它备份速度非常快,功能丰富,包括增量备份、更新整个目录树和文件系统、本地和远程备份、保留文件权限、所有权、链接等等。
以下最常用的两个场景为例
本地备份
rsync -rtvup --delete --exclude-from=/mnt/data/exclude.txt /mnt/data/* /mnt/backup
该命令把/mnt/data/
中的数据增量备份(只同步有更新、新增或删除的文件)至/mnt/backup/
,以下对用到的选项进行说明:
-r
– 递归复制数据-t
– 保留修改时间-v
– 详细输出,显示有关传输的详细信息-u
– 跳过目标中较新的文件-p
– 保留权限信息--delete
– 删除目标目录中多出的文件--exclude-from=
– 通过编写规则文件跳过不需要备份的文件或目录
exclude.txt
文件中的规则示例:
lost+found
tmp
*.log
*/node_modules
*.bak
*.pyc
*/debug
*/Debug
*/deps
*/.git
*/.ipynb_checkpoints
*/__pycache__
*.build
*.dist
*.dmp
*.dump
远程备份
rsync -rtvu -e "ssh -p 2222" --delete --exclude-from=/mnt/data/exclude.txt /mnt/data/Note user@server:/mnt/backup
该命令把本地的/mnt/data/Note
目录,通过ssh
服务同步至远程服务器-user@server
的/mnt/backup/
目录下, -e
选项可能设置ssh
命令的参数,如ssh -p 2222
指定ssh服务的端口为2222
,通过测试发现速度是很快的,源目录中8.1G
、26785
个文件,做一次增量备份,耗时只用了1.847
秒
方式二:rclone
rsync主要只支持ssh和rsync协议,如果想把文件备份至云盘,就得用这个工具了。Rclone是一个用 Go 语言编写的开源命令行程序,用于同步来自不同云存储提供商、私有云或本地的文件和目录,例如:Amazon Drive、Google云、Dropbox、坚果云、ownCloud、 Nextcloud、Webdev、Samba/CIFS(共享)、S3、Ceph、FTP/SFTP等,基本上覆盖了所有的公有云与私有云或其它网络文件存储协议。等等,国内的大部分云存储提供商除外,据我所知,只有坚果云通过开启webdav协议可以,还有阿里云盘,Github上的一个工具 – aliyundrive-webdav,实现了阿里云盘WebDAV服务。
使用rclone备份文件,首先需要做的是运行rclone config
来添加一个存储源,来连接上面所说的公有云与私有云,根据提示完成配置后用rclone sync
命令来同步备份数据,我这里创建了一个阿里云盘的存储源,名称就为aliyun
,现在把本地的音乐备份至阿里云盘的Music
目录下,命令行如下:
rclone sync --retries 1 --ignore-errors /mnt/data/Music aliyun:/Music
方式三:restic
rclone也有一些不足,比如很多云盘不保留原始文件的时间戳以及文件属性、有最大文件上传限制,还有文件直接上传,未压缩未加密,谁也不想自己的私密数据被用来喂AI吧,并且还有被删除的可能。Restic 是一款免费开源、高效、易于使用、快速且安全的基于命令行的备份程序。它旨在保护备份数据在任何类型的存储环境中免受攻击者的攻击。主要有以下特点:
- 加密备份文件,保护数据
- 支持秒传,以备份过的相同文件不会再备份,就算不是相同目录,可以节省容量
- 支持分卷、支持压缩
- 支持快照,类似时光机,可以还原至任意时刻
- 支持rclone为存储源,rclone支持的存储都支持
restic的使用方式与git
有些类似,先初始化,创建一个仓库(repo),再备份至该仓库。初始化会提示输入密码,该密码一定要找个小本本记下来,忘记了,备份在上面的数据就再也找不回来了。以上面rclone例子中的存储源为例,把照片加密备份至阿里云盘的DCIM目录下
restic -r rclone:aliyun:DCIM init
cd /mnt/data/DCIM
restic -r rclone:aliyun:DCIM backup --pack-size 48 ./*
参数--pack-size
为分卷的大小,默认单位是MB。备份后的数据,由于所有的仓库信息/配置数据,如加密信息,都是初始化时存在在仓库中的,所以,只要你记住密码,随时随地都可以很方便的进行对数据的访问,访问文件可以通过restic mount
命令,把仓库中的数据以只读的方式挂载至本地,当然也可以直接通过命令行浏览、查询、下载数据
#把备份至阿里云盘的照片挂载至/mnt/tmp
restic -r rclone:aliyun:DCIM mount /mnt/tmp
结语
以上是对这3个工具的介绍,这3个工具均跨平台且开源。因为跨平台,所有不只Lilux可用,Window、MacOS甚至Android都可以使用。实际情况可以根据自己的需要选择用哪个或哪几个,我个人主要用到了rsync与restic,restic用于备份文件至共有云,放心一些。平时用的时候可以把备份任务加到计划任务(crontab)中去,实现完全的自动化。
-END-
作者|dev2exp 保贝狗后端开发工程师