リモートアカウントのホームディレクトリをバックアップして復元したいです。
私が使用するコマンドは次のとおりです。
サポート
ssh [email protected] "tar jcf - ." > backup.tar.bz2
また覆う
cat backup.tar.bz2 | ssh [email protected] "tar jxf - ."
復元プロセス中にサーバーを再起動しても、すべてのファイルが復元されることを確認したいと思います。
私が望むことを達成する方法はありますか?上記のコマンドを基本にしたいのですが、他のアイデアも高く評価されます。
答え1
真の原子性を得るには、次のファイルシステムレベルの機能を使用する必要があります。Btrfsスナップショット。
答え2
回復が完了した後、いくつかのマーカーファイルを使用できます。回復が不完全で、表示されたファイルが見つからない場合は、不完全な回復を削除する必要があることを知っています。
答え3
rsync
ファイルを手動でバックアップする代わりに使用することをお勧めします。このツールを使用すると、いくつかのアドインを使用して現在実行中のタスクを実行できます。たとえば、パラメータを渡して、--progress
最後にコピーされたファイルを知ることができます。
もう1つの機能は、新しいファイルまたは変更されたファイルのみをコピーできることです。これにより、ネットワークを介して送信されるデータ量が削減されます。このパラメータを設定すると、--delete
フォルダから削除したファイルが削除されます。源泉フォルダ。最後に、-z
パラメータは圧縮を有効にします。
コマンドの構造は次のとおりです。
$ rsync options source destination
はい
rsync --progress -azv -e ssh --delete /home/guandalino/ \
[email protected]:/home/guandalino/backup/guandalino/
どこ
--progress
rsync 実行の詳細な進捗状況の表示-z
圧縮を有効にする-v
長いという意味-a
再帰を表します。また、権限、所有者、グループなども維持されます。--delete
ソースディレクトリに存在しないファイルを削除します。
確認してみてくださいはい。
バックアップのスケジュール
この部分は追加です。これが私のホームフォルダをサーバーに自動的にバックアップするために使用する方法です。上記の例をシェルスクリプトファイルに入れ、cron
毎日午前00時に実行するように有効にしました。
00 00 * * * /home/guandalino/backup_home_folder.sh 2>&1 >> /var/log/backup_home_folder.log
転送ログを保持できるように、スクリプト出力をファイルにリダイレクトします。ssh-keygen -t rsa
まだ公開鍵がない場合は、クライアントがパスワードを入力しなくてもサーバーに接続できるように公開鍵を生成する必要があります。
答え4
直接ではありません。最善の方法は、一時ディレクトリを復元して確認し、名前を変更することです。名前を変更すると、ファイルは自動的に正しい場所に移動されます。