bash - 如果 Rsync 不存在,则创建一个日志文件

标签 bash shell ssh rsync logfile

我正在编写一个简单的 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-filersync 一起使用,并为日志文件提供一个不存在的目录,则会出现日志文件确实存在的错误不存在。

但是如果提供的目录存在,那么日志文件会在提供的目录中自动创建。这是我正在使用的更新语法

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/

相关文章:

Linux Shell 脚本 - 带通配符的字符串比较

linux - Bash 字符串中特殊字符 '<' 的问题?

python - 在没有模块的情况下使用 Python 进行 ssh

windows - 可移植Windows Mosh?

amazon-web-services - 将 key 对导入 Amazon AWS - 指纹错误?

linux - 递归查找目录并在 Shell 脚本中重命名

bash - 如何使用 'find'返回父目录

bash - 如何检查符号链接(symbolic link)是否存在

linux - 外壳的位置参数未按预期工作

linux - Shell脚本正在打印参数而不传递给它