我有以下 crontab 条目来自动将我的文件复制到网络中的单独 W/S。但是,它不会复制文件,而是生成日志文件。以下是文件内容
#! /bin/bash
echo "Rsync - MA Inbound Files"
rsync -rvu /media/hdd2/MA-Inbound /media/miracle/
echo "Completed MA Inbound Files Sync, Starting Tally.ERP 9 Data File Sync"
rsync -rvu /media/hdd2/Tally.ERP9 /media/miracle/
echo "Completd Tally.ERP9 Data File Sync, Starting 2011 Accounts Files Sync"
rsync -rvu /media/hdd2/"2011 Accounts" /media/miracle/
echo "Completd 2011 Accounts Files Sync, Starting 2012 Accounts Files Sync"
rsync -rvu /media/hdd2/"2012 Accounts" /media/miracle/
echo "Completd 2012 Accounts Files Sync, Starting 2012 Files Sync"
rsync -rvu /media/hdd2/"2012 Files" /media/miracle/
echo "Completd 2012 Files Sync, Starting 2013 Accounts Files Sync"
rsync -rvu /media/hdd2/"2013 Accounts" /media/miracle/
echo "Completd 2013 Accounts, Starting Admin Files Sync"
rsync -rvu /media/hdd2/"Admin" /media/miracle/
echo "Completd Admin Files Sync, Starting MA_Staff Data File Sync"
rsync -rvu /media/hdd2/MA_Staff /media/miracle/
echo "Completd MA_Staff Data File Sync, Starting MA-Outbound Data File Sync"
rsync -rvu /media/hdd2/MA_Outbound /media/miracle/
echo "Completd MA-Outbound Data File Sync, Starting Staff Pic Data File Sync"
rsync -rvu /media/hdd2/"Staff Pic" /media/miracle/
echo "Completd Staff Pic Data File Sync, End OF Syn"
这是我在 crontab 文件中输入的命令
30 22 * * * /Desktop/marsync.sh >AutoRsyncLogfile.txt
当我单独复制这些命令时,它运行完美
希望有人能帮助我解决这个问题......
谢谢
答案1
您没有说明日志文件包含什么;我认为它是空的。
如果是这种情况,那么您的问题似乎是由于 crontab 文件中使用的路径造成的:
30 22 * * * /Desktop/marsync.sh >AutoRsyncLogfile.txt
该/Desktop
部分可能不正确;该Desktop
目录通常位于您的主目录中(即/home/<username>
),并且可以由环境变量引用$HOME
。如果将其更改为类似以下内容:
30 22 * * * $HOME/Desktop/marsync.sh >AutoRsyncLogfile.txt
- 那么这应该可以工作。您还需要确保该marsync.sh
文件是可执行的:
chmod a+x $HOME/Desktop/marsync.sh
此外,您可能希望将标准错误(除了标准输出)捕获到日志文件中。使用&>
以下命令执行此操作:
30 22 * * * $HOME/Desktop/marsync.sh &>AutoRsyncLogfile.txt
答案2
您必须调用包括路径:/usr/bin/rsync 的所有命令,或者在脚本中指定路径: 看这里