如果 Rsync 不存在,则创建一个日志文件
Create a Log file for Rsync if not exists
我正在编写一个简单的 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.
所以很可能它正在寻找一个现有的日志文件,但如果它不存在,我希望创建它。请就如何实现这一目标提出建议。
一个简单的方法是执行 touch
以在执行 rsync
:
之前创建一个空文件
touch `date +"%Y-%m-%d"`.log
rsync <options>
touch
如果文件名不存在,则创建一个空文件,但如果文件存在,它只是更新最后修改时间。
问题出在您的路径中的波浪号 (~
)。您必须删除 =
或使用:
--log-file="$HOME/public_html/rsynclogs/rsync-backup-log-$(date +"%Y-%m-%d".log)"
反引号也是遗留的,应替换为 $( ... )
好的,在下面回答的最酷的人的良好指导下,我能够解决这个问题。实际上问题在于,如果您将 --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
推荐
已将 backticks(``)
替换为 $( ... )
。由@l'L'l
推荐
我正在编写一个简单的 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.
所以很可能它正在寻找一个现有的日志文件,但如果它不存在,我希望创建它。请就如何实现这一目标提出建议。
一个简单的方法是执行 touch
以在执行 rsync
:
touch `date +"%Y-%m-%d"`.log
rsync <options>
touch
如果文件名不存在,则创建一个空文件,但如果文件存在,它只是更新最后修改时间。
问题出在您的路径中的波浪号 (~
)。您必须删除 =
或使用:
--log-file="$HOME/public_html/rsynclogs/rsync-backup-log-$(date +"%Y-%m-%d".log)"
反引号也是遗留的,应替换为 $( ... )
好的,在下面回答的最酷的人的良好指导下,我能够解决这个问题。实际上问题在于,如果您将 --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
已将 backticks(``)
替换为 $( ... )
。由@l'L'l