我使用rsync
每晚的 cron 作业将两个文件夹备份到同一个目标磁盘:
rsync -avz /very/important/data /Backup/VID/
rsync -avz /other/stuff /Backup/tmp/
第一项作业备份了比第二项作业更重要的数据(例如邮箱与电影收藏),所以我想确保这项作业成功。而且第一项作业的数据量比第一项作业小得多。
现在,当磁盘已满时,我面临问题:
- 周一晚上:第一个作业成功了,但第二个作业填满了磁盘并最终停止并显示“磁盘已满“消息。没关系(有点)。
- 周二晚上:由于前一天晚上的备份磁盘仍然满了,所以此时已经第一的作业失败。现在这是坏的。
所以我想知道如何限制第二个 rsync 作业的可用(目标)磁盘空间:如果我可以告诉第二个作业可用空间减少了(比如说)3GB,它就会提早退出并为第二天的重要作业留出空间。
第一个想法是在备份磁盘上创建一个大的临时文件(在第一项作业完成后,第二项作业开始之前),并在第二项作业完成后(下一轮之前)删除该文件。
现在我想避免这种情况,因为备份磁盘实际上是一个 NFS 挂载,并且只是为了保持空间可用而在该设备上创建 GB 的虚拟文件的速度相当慢。
客户端系统:
- Debian/GNU Linux 8.2(杰西)
- nfs 实用程序
1:1.2.8-9
- 核心
3.16.0-4-amd64
我无法访问 NFS 服务器。
答案1
既然您提到使用 nfs,我认为使用 nfs 配额可能是最简单的解决方案。
编辑您的/etc/fstab
以限制非重要数据挂载点的大小,如下所示:
<server>:</remote/export> /BACKUP/other/mnt auto rw,noauto,user,usrquota 0 0
关键是将usrquota
位添加到安装选项
并按照此处的指南进行操作: https://en.wikibooks.org/wiki/LPI_Linux_Certification/Managing_Disk_Quota
如果这个简短的介绍还不够的话,还有很多关于如何做到这一点的指南。 https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/3/html/System_Administration_Guide/ch-disk-quotas.html