从crontab设置自动rsync的最终方法是什么,通过互联网将内容从一台linux机器同步到另一台linux计算机



我选择了一个小项目,该项目涉及一个Ubuntu Web服务器,使用Rsync来获取内容(图像和用于导入mySQL数据库的CSV文件),该项目每隔10分钟运行一次,以实现平稳更新。

几年来,它一直运行良好,直到最近。由于我怀疑之前的方案可能不是最完善、最安全的方案,我希望有经验的人能为如何重做提供一些意见。

目前,最近停止工作的系统的功能如下-

在Web服务器上,这一行在crontab中运行:

*/10 *  * * *   root    /home/a/b/abc/web/rsync.script

rsync.script文件的内容如下:

#! /bin/sh
# This script updates the website with the latest CSV by RSYNC and imports the CSV into the MySQL database.
# Now also imports the product images from the office server (added 26/10/2011).
# Step 1 - clearing away the previous data
rm /home/a/b/abc/web/public_html/import/csvdata/*
# Step 2 - getting the new CSV and updating the product image directory
rsync -a office.address.here::abc /home/a/b/abc/web/public_html/import
# Step 3 - chown/chmod what we have imported
chown -R 2022:sites /home/a/b/abc/web/public_html/import
chmod -R 744 /home/a/b/abc/web/public_html/import/*
chmod 0755 /home/a/b/abc/web/public_html/import/csvdata
chmod 0755 /home/a/b/abc/web/public_html/import/images
# Step 4 - run the PHP to import the new CSV into the database
cd /home/a/b/abc/web/public_html
php /home/a/b/abc/web/public_html/csv-import.php
exit 0

我已经确认,已经损坏的部分,是上面的第2节。当尝试从Web服务器命令行手动运行时,会出现以下结果:

admin@webserver:/home/a/b/abc/web#sudo rsync-办公室地址。此处::abc/home/a/b/acc/web/public_html/import@错误:无法打开锁定文件rsync错误:在main.c(1522)[receiver=3.0.4]启动客户端服务器协议(代码5)时出错

Web服务器上没有/etc/rsync.conf或/etc/rsyncd.conf文件。考虑到本例中的使用方法,我不确定最初是否有,或者是否需要。

在Debian盒子的办公机器上,我们有以下/etc/rsync.conf文件:

max connections = 2
log file = /var/log/rsync.log
timeout = 500
[abc]
  comment = ABC RSync
  path = /home/abc/samba_websync/websync/
  read only = no
  list = yes
  uid = abc
  gid = abc
  #auth users = mongrel
  list = yes
  #hosts allow = 127.0.0.0/8 192.168.0.0/24
  #secrets file = /etc/rsync.secrets

让我担心的是,在整个通信过程中显然没有安全措施。

我花了一天的时间阅读了一些如何操作和教程,老实说,如果有什么不同的话,它会变得有点令人困惑。我确信我不想修理目前的系统。我想实现一个更安全、更好的系统。新系统需要:

1-只同步办公机器上的更改,因为产品有很多图像文件,我们不想每10分钟传输一次!2-通信需要无缝对话,而无需手动输入密码。

网络服务器和办公机器位于一段距离之外,并且无论如何都不在局域网内。他们通过互联网进行交流。

我对实现这一目标的最佳、高效方法持开放态度!

提前谢谢。:)

我对这两台机器都有root访问权限

你看过Unison吗?

我发现它相对容易设置和维护,并提供了很多有用的功能。

与Rsync不同,Unison更新两个副本,但您可以使用-nocreation-noupdate使其单向。要将其与crontab一起使用,请参见-batch选项。

office.address.here是否在TCP 873端口侦听?

rsync可以通过连接xinetd的服务进行远程操作,这将需要xinetd在873上运行和侦听,或者通过ssh使用远程连接,主要使用TCP端口22。

rsync可以处理已删除的文件以及所有权和权限,因此步骤1和3可能没有必要。rsync将只传输那些更改的文件,对于跨internet传输文件,您应该通过ssh使用rssync

查看rsync文档

我撤回这个问题,因为它不再相关。最初的Rsync功能因提供给Web服务器的Linux机器上的严重磁盘问题而中断。该网络服务器现在也很旧,正在被一个更新的服务器取代,我将根据上面的Bernards建议从中运行Unison。这将从办公室的Windows计算机上同步。

感谢Bernard和Raul的回复。听到别人的回复总是很感激的,即使这些回复并不是你最初想要的,因为他们经常会被记住,以便以后修改!伯纳兹对Unison的回应就是本案的一个完美例子。非常感谢。

Cass

相关内容

最新更新