gpt4 book ai didi

Linux - 仅将新文件从一台服务器复制到另一台服务器

转载 作者:太空宇宙 更新时间:2023-11-04 13:00:57 26 4
gpt4 key购买 nike

我有一台服务器,文件通过 FTP 传输到某个位置。自传输开始(2015 年 1 月)以来,所有文件都在那里。我想制作一个新服务器并从第一个服务器的位置传输文件。基本上,我需要一个 cron 作业来运行 scp 并仅传输自上次运行以来的新文件。

使用 ssh 的服务器之间的连接正常,我可以在服务器之间无限制地传输文件。我怎样才能在 Ubuntu 中实现这一目标?

可能与另一个问题重复的问题是站不住脚的,因为在我的目标服务器上,我只有一个文件,我应该在其中保留上次 cron 运行的日期,并且将从第一台服务器复制的文件将被解析和之后删除。

rsync 将简单地确保所有文件都存在于两个服务器中,对吗?

最佳答案

我设法使用以下方法在远程计算机上设置 cron 作业:

我首先创建了一个时间戳文件,它将在 cron 作业运行时保留最后一个时间戳:

touch timestamp

然后我使用 ssh 和 scp 命令复制所有文件:

ssh username@remote find <files_path> -type f -newer timestamp | xargs -i scp -i username@remote:'{}' <local_path>

然后我用新的修改时间触摸时间戳文件:

touch -m timestamp

此脚本的唯一问题是,如果在 ssh 运行期间在第二次接触时间戳之前将文件复制到远程主机,则此文件在以后的运行中将被忽略。

稍后编辑:为确保时间戳文件与实际运行之间没有因 ssh 命令持续时间而产生的间隙,脚本已更改为:

touch timestamp_new
ssh username@remote find <files_path> -type f -newer timestamp | xargs -i scp -i username@remote:'{}' <local_path>
rm -rf timestamp
mv timestamp_new timestamp

关于Linux - 仅将新文件从一台服务器复制到另一台服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33894426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com