如何将每天的内容复制到两个目的地中的另一个?

如何将每天的内容复制到两个目的地中的另一个?

如何使用 cron 来实现这个功能?

  • 今天:cp * ~/destination.0
  • 明天:cp * ~/destination.1
  • 明天:cp * ~/destination.0
  • 明天:cp * ~/destination.1

...等等。

任何帮助将不胜感激!

答案1

一句话:

0 0 * * * cp /path/to/* /path/to/destination.$(( $(date -d $(date +%F) +%s)/(3600*24) % 2))

解释:

$(( $(date -d 0:00 +%s)/(3600*24) % 2))
  • 将返回+%s今天 0:00 ( -d 0:00) 的时间戳(以秒为单位) 。
  • 除以(3600*24)将返回从 UNIX 纪元开始的天数。
  • %2将返回 0 或 1 来表示自 unix 纪元开始以来的奇数天或偶数天。

答案2

我同意“每天运行 cronjob,在脚本中切换目录”的答案,但我会这样做:

#!/bin/bash 
# use hidden link
last=$HOME/.last_destination
#
declare -a dirs
dirs[0]="destination.0"
dirs[1]="destination.1"
#
target=
#
# If $last is a link, it points to the last used directory. Otherwise,
# initialize it and use $HOME/destination.0
if [[ -L "$last" ]] ; then
    # get the name of the linked dir
    old="$(stat  --printf="%N" "$last" | cut -d\' -f4)"
    if [[ "$old" == "${dirs[0]}" ]] ; then
        target="${dirs[1]}"
    else
        target="${dirs[0]}"
    fi
else
    # "$last" is not a link - first time initialization
    target="${dirs[0]}"
fi
# now, with $target set, point the $last link at $target, for next time
rm "$last"
ln -s "$target" "$last"
#
# debugging printouts - remove in real life
echo "$target"
ls -l "$last"

答案3

~/destination.0如果在偶数日期和奇数日期写入都可以~/destination.1,则以下 crontab 行应该可以工作。它在午夜(0 分钟,0 小时,行上的前两项)开始备份,

0 0 * * * echo cd dir2copy;dtmp=$(( $(/bin/date '+%d') % 2 ));echo /bin/cp * ~/destination."$dtmp"

有关 crontab 语法的解释,请参阅此链接,

使用 Cron Jobs 安排任务

在终端窗口中测试该行的命令部分,

echo cd dir2copy;dtmp=$(( $(/bin/date '+%d') % 2 ));echo /bin/cp * ~/destination."$dtmp"

当它起作用时,你可以替换cd dir2copycd to-the-actual-directory-you-want-to-copy,替换~使用/home/your-home-directory和删除这两个echo词来让它完成真正的工作。

再次测试,然后修改 crontab 行。(crontab 中的环境可能需要程序、目录和数据文件的明确完整路径。)


/bin/date '+%d'查找月份中的日期,并%进行余数运算,得出01,附加在命令行的末尾。

您可能更喜欢/bin/date '+%j',它可以查找一年中的某一天,例如今天,12 月 1 日,是第#335

答案4

每天从 cron 运行此脚本:

/bin/sh #!/bin/sh
设置-e
cp * ~/目的地.0
mv ~/destination.0 ~/destination.last
mv ~/目的地.1 ~/目的地.0
mv ~/目的地.last ~/目的地.0

相关内容