这是我第一次尝试 shell 脚本。我只是尝试使用 Rsync 将某些文件夹从一台服务器增量复制到另一台服务器,但使用 link-dest 选项创建指向未修改文件的硬链接。当我检查文件夹“Editshare_Backups”中存在的文件夹结构文件大小时,我发现它们似乎彼此一样大。我在“Editshare_Backups”文件夹内使用du -sh *
,因为我的印象是du
在计算大小时不计算第二个硬链接。
我stat -f %l
在第一个完整备份中使用了一个特定文件,它仅显示 1 个硬链接。
还有哪些其他选项可以检查是否已建立硬链接?
我的 shell 脚本中的代码是:
#!/opt/bin/bash
#Rsync Editshare Database Backups Script
#Todays date
TODAY=`date -I`
#Yesterdays date
PREVIOUS_DAY=`date -I`
#The source directory:
SRC1="/RAIDS/RAID_2"
SRC2="/etc"
SRC3="/var/lib"
#The target directory:
TRG="/volume1/Editshare_Backups/$TODAY"
#The link destination directory:
LNK="/volume1/Editshare_Backups/$PREVIOUS_DAY"
#The rsync options:
OPT="-avh -e ssh --delete --progress --link-dest=$LNK"
#Log file:
LOG="/volume1/Editshare_Backups/Logs/Log_$TODAY.log"
#Execute the backup
rsync $OPT [email protected]:$SRC1 :$SRC2 :$SRC3 $TRG >> $LOG 2>&1
答案1
了解 rsync 是否硬链接的最佳方法是通过 gparted 等查看磁盘使用情况,并查看其是否创建大型备份。它不应该,并且 --link-dest 选项按照它的说明执行。当硬链接只是指向实际磁盘上相同数据块的链接时,硬链接对于系统的其余部分和许多程序来说将显示为该数据的重复副本。