同步两台服务器之间的文件夹

时间:2015-04-28 18:08:31

标签: php sync rsync fallback mirroring

我必须为外部应用程序实现回退解决方案(auth系统)。因此,我必须保持我的主auth服务器的auth文件夹与我的后备服务器同步。该文件夹包含几个.php文件,.bin文件和其他一些文件。不幸的是,我不知道我应该如何实现(例如每小时)将这些文件夹同步到我的后备服务器。

所有服务器都使用CPanel / WHM,也许有一个解决方案,或者如何保持它们同步?我想到了一个.php脚本,它通过FTP登录并同步它们。我会为这个.php脚本添加一个cronjob。但我甚至不知道这是否可行。如果主服务器处于脱机状态,它当然不会以负面方式影响我的备用服务器。

我应该如何理解这一点?

2 个答案:

答案 0 :(得分:3)

我建议您使用RSYNC,假设您没有使用共享主机方案。

  

Rsync代表"远程同步",是一个远程和本地文件   同步工具。它使用最小化数量的算法   仅通过移动已更改的文件部分复制的数据。

http://www.tecmint.com/rsync-local-remote-file-synchronization-commands/

为此,您需要访问服务器上的SFTP端口,当然还有Linux终端!

答案 1 :(得分:1)

Leonel Atencio对rsync的建议很棒。

这是我使用的rsync shell脚本。它放在我项目中名为/publish的文件夹中。 gist包含shell脚本提到的rs_exclude.txt文件。

rsync.sh

# reverse the comments on the next two lines to do a dry run
#dryrun=--dry-run
dryrun=

c=--compress
exclude=--exclude-from=rs_exclude.txt
pg="--no-p --no-g"

#delete is dangerous - use caution.  I deleted 15 years worth of digital photos using rsync with delete turned on.
# reverse the comments on the next two lines to enable deleting
#delete=--delete
delete=

rsync_options=-Pav
rsync_local_path=../
rsync_server_string=user@example.com
rsync_server_path="/home/www.example.com"

# choose one.
#rsync $rsync_options $dryrun $delete $exclude $c $pg $rsync_local_path $rsync_server_string:$rsync_server_path

#how to specify an alternate port
#rsync -e "ssh -p 2220" $dryrun $delete $exclude $c $pg $rsync_local_path $rsync_server_string:$rsync_server_path

https://gist.github.com/treehousetim/2a7871f87fa53007f17e

通过cron

运行

Cron {
{3}}

编辑你的crontab。

# crontab -e

Crontab条目是每行一个。注释字符是井号(#)符号。对cron条目使用以下语法。

这些示例假设您将rsync.sh脚本放在~/rsync中 这些示例还将创建rsync输出的日志文件。

每分钟

* * * * * ~/rsync/rsync.sh > ~/rsync/rsync.log

每5分钟

*/5 * * * * ~/rsync/rsync.sh > ~/rsync/rsync.log

保存您的crontab并退出编辑器。您应该会看到一条消息,确认您已添加到crontab。