0

我无法在我的谷歌搜索中找到具体的答案,所以我想也许有人可以为我提供答案,或者可以为我指明正确的方向。

我有 2 台服务器都运行 CentOS 6.3。一个是开发服务器,另一个是实时服务器。我在开发服务器上进行所有更改,测试它们,然后在我满意后将它们复制到实时服务器。系统工作正常,但每次推送文件或目录时都必须使用 scp 或 rsync 并键入整个绝对目录路径是很痛苦的。

无论如何,我都不是经验丰富的系统管理员,但我喜欢一种方法来运行一个脚本,该脚本将获取所有最近更改的文件(可能在过去 20 分钟内,或者我指定的时间)并让它自动推送它们到实时服务器,保持相同的目录结构和所有内容。

是否有一些简单的东西可以为我做这件事,或者我可以写一些 bash 脚本来做这件事?

提前致谢。

4

2 回答 2

0
find -mmin -20 -exec mv {} {}NEW \;

find -mmin -20查找上次修改时间少于 20 分钟的所有文件。您还可以指定一个目录。

-exec选项对所有找到的文件调用命令。{}替换为实际的文件名。在我的示例中,文件被简单地重命名,执行的命令将是

mv filename filenameNEW

对于每个文件。在这里你当然会放上你的scporrsync声明。

-exec命令需要以 a 结尾;,因为;它也是 bash 中的特殊字符,所以需要用\

于 2013-11-07T22:34:31.043 回答
0

多亏了 Keith 和 pfnuesel 的帮助,我终于弄明白了。这是我的解决方案,以防其他人正在寻找一种简单的方法来做到这一点。

我最终在 rsync 中使用了 --update 选项,它实际上只会将文件复制到远程服务器上,这些文件比那里存在的版本更新。所以我最终只是在我的 ~/.bashrc 文件中创建了一个函数来为我运行它。这是我放在一起的功能-

function push() {
    rsync -avzu /var/www/$1 root@12.34.56.78:/var/www/$1
}

所以我可以运行“push dirname”,它就像一个魅力。谢谢你们的帮助!

于 2013-11-07T23:06:24.233 回答