【发布时间】:2021-07-06 02:47:29
【问题描述】:
目前我按照以下步骤将文件从 server_x 复制到 server_y(假设我在 2021 年 4 月 20 日运行此代码 = 202104)
sshpass -p "my_server_y_password" ssh myusernameY@server_y
sshpass -p "my_server_x_password" scp myusernameX@server_x:server_x/file/path/file_202104.txt server_y/file/path
我想让这段代码在每个月的 20 日运行,并使用 YYYYMM 日期格式来搜索文件。如果文件不存在,它不应该做任何事情
我认为代码应该看起来像(在 my_bash_script.sh 中)
year_month="$(date +'%Y%m')"
FILE=file/path/file_$(year_month).txt
# somehow check if file from server_x exists (currently I don't know how to do it on a different server)
if test -f "$FILE"; then
sshpass -p my_server_y_password ssh myusernameY@server_y
sshpass -p "my_server_x_password" scp myusernameX@server_x:${FILE} server_y/file/path
fi
然后,我应该运行我的脚本
* * 20 * * my_bash_script.sh
我确信有更优雅的解决方案可以解决我的问题。另外,我认为我的代码的某些部分甚至无法正常工作。请帮我找到适合我的任务的解决方案
编辑原因:我按照@looppool 的建议用 crontab 命令替换了以前的代码
【问题讨论】:
标签: linux bash automation cron