我正在编写一个简单的 bash 脚本,其中 bash 脚本会将我的实时服务器与我的临时服务器同步。我正在使用 rsync 来执行此操作。
我需要的是脚本执行的每一天的日志文件。我正在使用以下命令
rsync -azP --stats source-directory user@host.com:destination-directory --log-file=~/public_html/rsynclogs/rsync-backup-log-`date +"%Y-%m-%d"`.log
这个命令给我的错误是
rsync: failed to open log-file ~/public_html/rsynclogs/rsync-backup-log-2017-01-11.log: No such file or directory (2)
Ignoring "log file" setting.
所以很可能它正在寻找现有的日志文件,但如果它不存在,我希望创建它。请建议我如何实现这一目标。
最佳答案
好的,在下面回答的最酷的人的良好指导下,我能够解决这个问题。实际上,问题是,如果您将 --log-file
与 rsync
一起使用,并为日志文件提供一个不存在的目录,则会出现日志文件确实存在的错误不存在。
但是如果提供的目录存在,那么日志文件会在提供的目录中自动创建。这是我正在使用的更新语法
mkdir -p -v $HOME/public_html/rsynclogs/
rsync -azP --stats source-directory user@host.com:destination-directory --log-file=$HOME/public_html/rsynclogs/rsync-backup-log-$(date +"%Y-%m-%d").log
现在 mkdir 创建一个目录。按照@janek的建议,我添加了 -p 只是为了检查目录是否存在,并且仅在不存在时创建。
语法中的其他更新:
将 ~
替换为 $HOME
。由 @l'L'l 建议
用 $( ... )
替换了 反引号(``)
。由 @l'L'l 建议
关于bash - 如果 Rsync 不存在,则创建一个日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41588158/