
私は2台のマシンを持ってA
いますB
。A
SSHを介してマシンにアクセスできますB
。A
利用可能なスペースがたくさんあります。B
データが危険な状況にあります。 B
すべてのデータを自動的にバックアップする方法A
。あまり頻繁に行う必要はありませんが、ハンズフリーでなければなりません。すべてのA
開始は十分に頻繁です。同期が可能だと聞きました。
答え1
ほとんどのLinuxディストリビューションで毎日これを行うには、次のコマンドを入力しますrsync
。@guidoからの返信)をスクリプトに追加し、そのスクリプトを/etc/cron.daily
ディレクトリに配置します。anacron
インストールされている限り(デフォルトではそうではないかもしれません)、次にcron.daily
コンピュータが起動したとき(またはコンピュータが切り替わると真夜中に実行されたとき)に、欠落しているすべてのタスクがキャプチャされます。
スクリプトの場合は、次のようにします。
#!/bin/sh
rsync -a user@serverB:/source/folder/ /destination_folder
-z
バックアップが遅い接続で行われたり、帯域幅を節約したい場合は(圧縮)オプションを追加できますが、実際には最新のシステム/ネットワークのパフォーマンスを低下させる可能性があります。
各バックアップのログを保持するには、次の手順を実行できます。
#!/bin/sh
rsync -av user@serverB:/source/folder/ /destination_folder \
>/var/log/backup_log 2>&1
これがcronジョブとして機能するには、次のものが必要です。パスワードのないSSHに設定根サーバーAからサーバーBにログインします。ジョブはrootとして実行されるため、rootアカウント(つまりタイプ/root/.ssh
)である必要があります。cron.daily
答え2
使用することをお勧めしますrdiff バックアップ。今、私はそれを使って毎晩私のデータ(ワークステーション2つ、サーバー2つ、他のサーバーのアカウント)を自動的に増分バックアップします。
以前はrsyncを使用したことがありますが、より便利で、仮想マシンのディスクイメージなどの大容量ファイルの増分バックアップを実行できるため、rdiff-backupに切り替えました。 rdiff-backupは以前のrsyncバックアップスクリプトと非常に似ていますが、完了しました。正しい。
スクリプトファイルを入れました。/etc/cron.dailyバックアップが保存されたマシンでは、毎朝rdiff-backupが開始され、リモートマシンからデータがインポートされます。
答え3
以前のすべての回答に加えて、以下はSSHキーに依存する答えです。これは、そのキーでログインするときに実行できる操作を制限します。
サーバーAから
この時点では、別々のユーザーを作成したり、既存のユーザー名の1つを使用したりすることは重要ではありません。しかし、私は別のユーザーを作成します。bkpuser
次の例では、両方のサーバーのユーザー名を使用します。
ログイン後、bkpuser
パスワードなしでSSHキーを生成してください。
サーバーBで
PubkeyAuthentication
で有効になっていますsshd_config
。
ユーザーを作成しますbkpuser
。非常に複雑なパスワードを設定するか、このユーザーのパスワードログインを無効にします(これを行う方法は、実行しているUnixとディストリビューションによって異なります)。重要なのは、ユーザーがSSHキーを介してのみログインできることです。bkpuser
バックアップしたいすべてのディレクトリとファイルに対する読み取り権限があることを確認してください。
Aで生成された鍵の公開部分を~bkpuser/.ssh/authorized_keys
Bにコピーします。接続時に自動的にコマンドを実行するように編集されました。このコマンドはシェルスクリプトへのポインタにしてはいけません。代わりに、シェルスクリプトがキーに直接挿入されます。また、キーはサーバー A でのみ使用でき、他のサーバーでは使用できないように制限も含まれます。次の例では、サーバーAのIPアドレスを提供し、バックアップしたい10.1.2.3
ファイルがあると仮定しています/data
。
from="10.1.2.3",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="cd /data;/usr/bin/tar -cf - *; /usr/bin/logger -t BACKUP -p daemon.info \"INFO: Backup-files on $HOST fetched from ${SSH_CLIENT%% *} by $USER\";" ssh-dss AA.....
サーバーAから
エントリをサポートする cron タブのいずれかを使用している場合は、コマンドを使用して@reboot
そのエントリを s crontab に追加します。許可されていない場合はいつでも設定できます。私のデータなら、おそらく毎日これを行います。bkpuser
ssh -i ~bkpuser/.ssh/id_dsa serverB > backup.tar.gz
答え4
rsyncを使用してこれを達成できます(リバース)。
serverA# rsync -avz user@serverB:/path-to-backup.tar.gz /var/backup
どこ:
-avz archive, compress and be verbose