-1

Web サイトを毎日バックアップするための php スクリプトを作成しています。バックアップは私の別の Linux サーバーに送られますが、すべてのファイルを圧縮し、スクリプトを介して別の Linux サーバーに送信するにはどうすればよいですか?

4

2 に答える 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 に答える