我有一个外部硬盘(ext4 类型),我每天通过 anacron 脚本将我的 /home 文件夹和 postgresql 数据库备份到该硬盘上。我遇到了两个问题:
1.) 当计算机(Ubuntu 18.04)启动时,我需要输入我的登录密码。然后备份命令将按预期运行。我想要的是命令在启动时自动执行,而无需我在 anacron 开始执行脚本之前登录。相关命令是:
rsync -acu --delete --exclude-from='/home/chh1/rsync_exclude.txt' /home/ /media/chh1/f86f92f7-bcb4-4b8e-8a64-8a210606d422/home_backup/
pg_dump -h localhost -p 5432 -U postgres -d crewdb -w -C -F p -b -f /media/chh1/f86f92f7-bcb4-4b8e-8a64-8a210606d422/home_backup/chh1/Dropbox/postgres_backup/crewdb.backup.sql
请注意,以下命令也是脚本的一部分,它在备份到同一台计算机时无需提供登录详细信息即可执行:
pg_dump -h localhost -p 5432 -U postgres -d crewdb -w -C -F p -b -f /home/chh1/Dropbox/postgres_backup/crewdb.backup.sql
2.) 由于磁盘错误,大约 50 次成功备份后,备份无法正常工作。此问题在 fsck 扫描后得到纠正。为了在每 15 次启动后自动执行 fsck 扫描,我执行了
sudo tune2fs -c 15 /dev/sdb1
Kamil Maciorowski(超级用户)告诉我,如果 fstab 没有经过相应编辑,fsck 将无法运行。这让我想到,这两个问题可能都可以通过 fstab 条目解决。以下是我认为可能的解决方案的示例,但我只想与知情人士再确认一下(还有第 12 行 fstab 条目的语法,可以吗?)。此外,我愿意听取任何其他可能指向正确方向的想法:
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/ubuntu--vg-root / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda1 during installation
UUID=A3DA-B118 /boot/efi vfat umask=0077 0 1
/dev/mapper/ubuntu--vg-swap_1 none swap sw 0 0
/dev/sdb1 /media/chh1/f86f92f7-bcb4-4b8e-8a64-8a210606d422 ext4 rw,auto 0 2
答案1
我所做的似乎已经解决了上述两个问题,即在 /etc/fstab 中添加以下条目:
UUID=f86f92f7-bcb4-4b8e-8a64-8a210606d422 /media/chh1/f86f92f7-bcb4-4b8e-8a64-8a210606d422 ext4 sync,rw,suid,auto,user 0 2
UUID=f86f92f7-bcb4-4b8e-8a64-8a210606d422
通过运行我发现
sudo blkid /dev/sdb1
,以前的备份过程平均需要大约 8 分钟。最后一次在 fstab 中使用这个条目的备份花费的时间几乎是原来的两倍,但没有返回任何错误消息,备份已完成并且看起来一切正常。所以我将尝试找出为什么需要这么长时间。