rsync 使用旧日期创建目标目录

rsync 使用旧日期创建目标目录

我有一个脚本可以自动备份我的 xubuntu 12.04LTS 工作站的每小时快照。它会创建一个根据日期和时间命名的目录,即:20140316-1033,代表今天上午 10:33,即 3 月 16 日。备份工作完美无缺,硬链接正常运行。

两天前情况发生了变化。我一直手动运行它 - 偶尔,最后我决定让 cron 自动执行该任务,每小时运行一次。我更改了脚本中的详细程度,对每次备份要复制的内容进行了一些调整。所以,我显然改变了一些东西,但我不知道我做了什么。

当我检查目标目录的创建日期时,它始终是 2014 年 3 月 14 日 11:23。在我开始摆弄之前,它运行正常。从那时起,创建日期都是静态的。

因此,我不得不更改脚本,以便它使用目录名称而不是目录的创建日期来确定快照的最新快照。

如果您能提供任何建议,我将不胜感激。提前致谢。

SOURCE="/"
NOW=$(date +"%Y%m%d-%H%M")
BASE="/media/backup-internal/furgesson"
PREVIOUS=$(ls -r $BASE | head -1)

if [[ "$NOW" != "$PREVIOUS" ]];
then
    TARGET="$BASE/$NOW"
    LINK="$BASE/$PREVIOUS"
    OPTIONS="-avH --delete --link-dest=$LINK"
    rsync $OPTIONS --include-from '/home/carolyn/BackupScripts/include-list.txt' --exclude-from '/home/carolyn/BackupScripts/exclude-list.txt' $SOURCE $TARGET
fi

目录列表如下所示...

total 124
drwxr-xr-x 25 root root 4096 Mar  7 04:04 20140314-0445
drwxr-xr-x 25 root root 4096 Mar 14 04:48 20140314-0512
drwxr-xr-x 25 root root 4096 Mar 14 04:48 20140314-0515
drwxr-xr-x 25 root root 4096 Mar 14 04:48 20140314-0821
drwxr-xr-x 25 root root 4096 Mar 14 04:48 20140314-0822
drwxr-xr-x 23 root root 4096 Mar 14 09:38 20140314-1013
drwxr-xr-x 23 root root 4096 Mar 14 11:23 20140314-1140
drwxr-xr-x 23 root root 4096 Mar 14 11:23 20140314-1314
drwxr-xr-x 23 root root 4096 Mar 14 11:23 20140314-2059
drwxr-xr-x 23 root root 4096 Mar 14 11:23 20140314-2128
drwxr-xr-x 23 root root 4096 Mar 14 11:23 20140314-2141
drwxr-xr-x 23 root root 4096 Mar 14 11:23 20140314-2144
drwxr-xr-x  3 root root 4096 Mar 14 11:23 20140315-0846
drwxr-xr-x  3 root root 4096 Mar 14 11:23 20140315-0848
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-0849
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-0856
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1125
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1135
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1138
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1405
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1409
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1433
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1533
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1633
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1733
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1833
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140315-1933
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140316-0733
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140316-0833
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140316-0933
drwxr-xr-x  4 root root 4096 Mar 14 11:23 20140316-1033

答案1

一些小问题:

  1. 你永远不应该解析ls也就是说,在这种情况下,您似乎可以完全控制目标目录中的文件名,因此ls可以将其作为一个选项。但是,我建议您ls -tr按时间排序,而不是按字母顺序排序:

    PREVIOUS=$(ls -tr $BASE | head -n 1)
    
  2. 让我们看看您的rsync选择。equals -a-rlptgoD

    -r, --recursive             recurse into directories
    -l, --links                 copy symlinks as symlinks
    -o, --owner                 preserve owner (super-user only)
    -g, --group                 preserve group
    -t, --times                 preserve modification times
    

    问题是-t,这会保留源文件的实际修改时间,因此它实际上不会将备份的修改日期设置为创建备份的时间,而是设置为原始文件的最后修改时间。替换-a-rlog(删除-t)以将时间设置为您期望的时间。

相关内容