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

标签 linux ubuntu cron scp

我有一台服务器,文件通过 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/

相关文章:

phpMyadmin 错误 2002 LEMP 堆栈

linux - 无法从 ubuntu 服务器中的 php 应用程序发送邮件

bash - 如何 bash 进入 docker 容器

python - 使用 cron 或其他一些调度程序在同一个 scrapy 项目中自动抓取多个蜘蛛

linux - 用于在不同时间以不同时间间隔运行作业的 Cron 表达式

在接下来的 n 小时内每五分钟执行一次 Cron 表达式?

linux - Arch Linux 的 Gnome 终端不工作

linux - 如何在 PhpStorm 之外编辑自定义 vm 选项?

任何人都可以解释和追踪这个因为我的老师不能

ubuntu - libstdc++.a 丢失