Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 用于将文件从服务器复制到其他服务器(如果存在)的每月脚本_Linux_Bash_Automation_Cron - Fatal编程技术网

Linux 用于将文件从服务器复制到其他服务器(如果存在)的每月脚本

Linux 用于将文件从服务器复制到其他服务器(如果存在)的每月脚本,linux,bash,automation,cron,Linux,Bash,Automation,Cron,目前,我遵循以下步骤将文件从服务器_x复制到服务器_y(假设我在2021年4月20日=202104运行此代码) 我想让这段代码在每个月20日运行,并使用YYYYMM日期格式来搜索文件。如果文件不存在,则不应执行任何操作 我认为代码应该是这样的(在我的_bash_script.sh中) 在这之后,我应该运行我的脚本 * * 20 * * my_bash_script.sh 我确信有更优雅的解决方案来解决我的问题。此外,我认为我的代码的某些部分甚至不能正常工作。请帮助我为我的任务找到合适的解决方

目前,我遵循以下步骤将文件从服务器_x复制到服务器_y(假设我在2021年4月20日=202104运行此代码)

我想让这段代码在每个月20日运行,并使用YYYYMM日期格式来搜索文件。如果文件不存在,则不应执行任何操作

我认为代码应该是这样的(在我的_bash_script.sh中)

在这之后,我应该运行我的脚本

 * * 20 * * my_bash_script.sh
我确信有更优雅的解决方案来解决我的问题。此外,我认为我的代码的某些部分甚至不能正常工作。请帮助我为我的任务找到合适的解决方案


编辑原因:正如@looppool所建议的那样,我用crontab命令替换了以前的代码。是的,有更优雅的解决方案。使用
cron
。请看一个例子。为方便起见,只需更改第三个参数:

 * * 20 * * my_bash_script.sh
对于更新的问题,您不必亲自检查文件是否存在或是否已更新。只需使用
rsync
-命令将文件从一台服务器复制到另一台服务器。它将只更新已更改的文件
rsync
还了解
ssh
-协议,您将很容易在internet上看到许多关于如何实现这一点的示例

但是,如何检查远程服务器中是否存在文件

不,如上所述,除非您想对现有文件执行额外的操作,否则您不需要自己执行

如果您只想同步文件,只需尝试:

rsync path/to/local_file remote_host:path/to/remote_directory

让我知道它是否适合您。

太好了!因此,如果[“$TodayDate”-eq“20”],我可以用它代替nohup和“TodayDate=$(date+%d)部分。但是,如何检查远程服务器中是否存在文件?我还编辑了我的问题。现在它包含了你的cron脚本,看起来更优雅了。我刚才看到你也编辑了你的答案。请修改您的答案,以编写每个步骤(my_bash_script.sh应该是什么样子,我应该在哪里/如何编写“**20**my_bash_script.sh”等),我将接受您的答案。谢谢!
 * * 20 * * my_bash_script.sh
rsync path/to/local_file remote_host:path/to/remote_directory