环境:Azure 中的 Ubuntu 16.04
我正在尝试备份特定文件夹。我使用一个简单的 tar 命令,没有压缩。我的目标是将文件保留一个月,每天逐步添加一次更改,然后每月压缩一次 tar 并启动一个新文件。
我的问题是:本地备份对我来说没有意义,因为如果本地文件系统死机或出现错误,原始文件系统和备份文件系统都会死机。(似乎很明显,但为了清楚起见我这样说)
我尝试使用 SMB 连接备份到单独的 Azure 存储容器,并通过 NFS 备份到另一台相同的 Ubuntu 机器。
我尝试了第二种选择,因为我读了这篇文章: tar 增量备份每次在 Dropbox 目录上使用时都会备份所有内容
因此,无论我做什么,tar 似乎都会在发出以下命令时忽略 -u 标志:
cd /savelocation; sudo /bin/tar --ignore-failed-read -up -f /savelocation/backupfoldername.tar /var/www/foldertobackup
我得到的不是额外的几兆(代表添加或更改的文件),而是一个 44GB 的文件,是原始文件大小的两倍。
任何想法或问题都将受到热烈欢迎。
答案1
根据我在这里的测试。
第一的:我认为这cd
对于执行命令来说不是必需的。
第二:您应该--listed-incremental
在您的命令中使用。
-g, --列出增量文件
处理新的 GNU 格式增量备份
--listed-incremental
根据我的测试以及评论中列出的其中一条观察结果,似乎只有当您已经拥有 TAR 文件时才有效。
含有空文件的文件夹
$ ll folder
total 8,0K
-rw-rw-r-- 1 ivanleon ivanleon 9 Jun 6 11:32 file1
-rw-rw-r-- 1 ivanleon ivanleon 9 Jun 6 11:32 file2
-rw-rw-r-- 1 ivanleon ivanleon 0 Jun 6 11:27 file3
创建磁带档案文件
$ sudo /bin/tar -cvf folder.tar folder
folder/
folder/file2
folder/file3
folder/file1
列出磁带档案文件
$ tar tvf folder.tar
drwxrwxr-x ivanleon/ivanleon 0 2017-06-06 11:27 folder/
-rw-rw-r-- ivanleon/ivanleon 0 2017-06-06 11:27 folder/file2
-rw-rw-r-- ivanleon/ivanleon 0 2017-06-06 11:27 folder/file3
-rw-rw-r-- ivanleon/ivanleon 0 2017-06-06 11:27 folder/file1
添加/修改文件夹中某些文件的数据
$ echo "newdata1" >> folder/file1
$ echo "newdata2" >> folder/file2
生成新的磁带档案文件(进行增量备份)
$ sudo /bin/tar -cvf --listed-incremental folder.tar folder
folder.tar
folder/
folder/file2
folder/file3
folder/file1
列出磁带档案文件(文件被替换)
$ tar -tvf folder.tar
drwxrwxr-x ivanleon/ivanleon 0 2017-06-06 11:27 folder/
-rw-rw-r-- ivanleon/ivanleon 0 2017-06-06 11:27 folder/file2
-rw-rw-r-- ivanleon/ivanleon 0 2017-06-06 11:27 folder/file3
-rw-rw-r-- ivanleon/ivanleon 0 2017-06-06 11:27 folder/file1
答案2
我对 --listed-incremental 做了一些研究。大多数文章充其量是令人困惑的,细节不够详细,无法完全理解。然后我发现了下面的文章,解释得很清楚:
http://paulwhippconsulting.com/blog/using-tar-for-full-and-incremental-backups/
我唯一想补充的是,我向作者询问过,如果你在一个小目标上进行测试,那么如果你立即进行测试,看起来你不会得到一个像样的增量,因为增量中存在很大的开销。但是,一旦你在更大的备份上实施它,它就会运行完美。
我没有备份到通过 SMB 连接的单独 Azure 存储帐户,而是创建了第二个相同的服务器并通过 nfs 连接它。它更加稳定,并且没有文件系统差异,不会造成混乱。我正在设置一个脚本,它将压缩每个备份,然后在每次备份完成后将其复制到 Azure 存储容器。通过在备份服务器上执行 zip,可以节省生产服务器的处理时间和功耗。我希望这对某些人有帮助。