Web サイトを毎日バックアップするための php スクリプトを作成しています。バックアップは私の別の Linux サーバーに送られますが、すべてのファイルを圧縮し、スクリプトを介して別の Linux サーバーに送信するにはどうすればよいですか?
質問する
343 次
2 に答える
1
TimothéeGroleauによって提供された答えは機能するはずですが、私はそれを逆に行うことを好みます。バックアップマシン(多くのストレージが利用可能なサーバー)から、他のすべてのサーバーをバックアップするプロセスを起動します。
私の環境では、すべてのサーバー、各サーバーの有効なユーザー、およびバックアップへのパスをリストした構成ファイルを使用しています。
/usr/local/etc/backupservers.conf
192.168.44.34 userfoo /var/www/foosites
192.168.44.35 userbar /var/www/barsites
/ usr / local / sbin / backupservers
#!/bin/sh
CONFFILE=/usr/local/etc/backupservers.conf
SSH=`which ssh`
if [ ! -r "$CONFFILE" ]
then
echo "$CONFFILE not readable" >&2
exit 1
fi
if [ ! -w "/var/backups" ]
then
echo "/var/backups is not writable" >&2
exit 1
fi
while read host user path
do
file="/var/backups/`date +%Y-%m-%d`.$host.$user.tar.bz2"
touch $file
chmod 600 $file
ssh $user@$host tar jc $path > $file
done
これが正しく機能し、バックアップするすべてのサーバーのパスワードを入力する必要がないようにするには、SSHキーを交換する必要があります(これを行う方法については、stackoverflowに関する多くの質問/回答があります)。
そして最後のステップは、これをcronに追加して、毎晩プロセスを起動することです。
/ etc / crontab
0 2 * * * backupuser /usr/local/sbin/backupservers
于 2012-05-11T08:04:55.013 に答える