我必须为外部应用程序实现回退解决方案(auth系统)。因此,我必须保持我的主auth服务器的auth文件夹与我的后备服务器同步。该文件夹包含几个.php文件,.bin文件和其他一些文件。不幸的是,我不知道我应该如何实现(例如每小时)将这些文件夹同步到我的后备服务器。
所有服务器都使用CPanel / WHM,也许有一个解决方案,或者如何保持它们同步?我想到了一个.php脚本,它通过FTP登录并同步它们。我会为这个.php脚本添加一个cronjob。但我甚至不知道这是否可行。如果主服务器处于脱机状态,它当然不会以负面方式影响我的备用服务器。
我应该如何理解这一点?
答案 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文件。
# 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
{
{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。