web-dev-qa-db-ja.com

複数の場所からのバックアップ作成を自動化し、日付ごとに構成し、ローカルおよびクラウドの増分バックアップを保持します

VPS(Ubuntu Server 18.04)上にアプリを持っています。ホストはすべてのシステムの毎週のバックアップを実行できます。

しかし、これだけでは十分ではないので、すべてのシステムではなく、自分でバックアップを行いたい(過去にホストのバックアップファイルが失敗した場合を除く)。

  1. 複数の場所の増分バックアップを行う必要があります。
  2. フォルダー/ディレクター構造にある増分バックアップ(同じ日付フォルダー内のすべての複数の場所、ただし増分のまま):

    • folder_name__date1
    • folder_name__date2
    • folder_name__today
  3. 毎日行われるプロセスを自動化する

  4. フォルダー/ファイル構造のローカルバックアップを維持する
  5. クラウド(DropBox、Box)に更新しますが、更新する前にバックアップをパスワードでバックアップします

Rsyncとchronについて読みましたが、わかりません。

  • フォルダーを使用して増分を行う方法
  • クラウドへのアーカイブ/更新
  • bashを使用してすべてのプロセスを自動化する
1
user3541631

また、目標を達成する準備をするためにドキュメントを読む必要がありました。始めましょう。データのタイプとアクセス頻度がわからない場合、rsyncを使用してバックアップしたいフォルダーを一時ディレクトリに同期して増分バックアップを実行できます。

  1. ソースtar: http://www.gnu.org/software/tar/manual/html_node/Incremental-Dumps.html
  2. ソースrsync: https://download.samba.org/pub/rsync/rsync.html
  3. ソース7Zip: https://linux.die.net/man/1/7z
  4. ソースrclone dbox: https://rclone.org/dropbox/
  5. bashスクリプト: https://www.tldp.org/LDP/abs/html/

したがって、バックアップするフォルダを/ home/userおよび/ home/user2であると仮定して、このタスクを実行します。一時ディレクトリは/ media /バックアップ/フォルダ名__date1。次の構造を取得するために、フォルダー用の2つのrsyncジョブでスクリプトを開始します。

mkdir -pv /media/Backup/folder_name__`date +%Y%m%d`
Backup/
└── folder_name__20180910
    ├── user
    └── user1

そのためのrsyncコマンドは次のとおりです。

rsync -a /home/user /media/Backup/folder_name__20180910
rsync -a /home/user1 /media/Backup/folder_name__20180910

[〜#〜] attention [〜#〜]:ソースパスが/で終わる場合、宛先は作成されませんただし、ルート宛先フォルダ内のすべてのデータを同期します。

これで、バックアッププロセス中にデータにアクセスできないことが確実な場所に正確なコピーが作成されました。これは、データの品質を保証し、tarを適切に機能させるために重要です。ファイルのタイムスタンプに基づいて増分を行います。アーカイブを作成しましょう:

tar --create \
           --file=/path/where/you/like/folder_name__20180910.tar \
           -C /media/Backup/ \
           --listed-incremental=/var/log/db.snar \
           folder_name__20180910
  • -create作成およびアーカイブすることを示します
  • -file tarが保存されるパスを示します
  • -listed-incrementalこれは、tarがデータのデルタを検索するために探すデータベースのパスです。
  • -C作業ディレクトリのtarを指定します。これにより、パスのすべてのフォルダーを含むアーカイブを作成できなくなります。これにより、tarのルートにfolder_name__20180910が見つかります。
  • 最後は、アーカイブに追加するフォルダーです

[〜#〜] important [〜#〜]:データベースtarの作成は将来も同じである必要があります。変更された場合、常に完全になります

これで、最初のバックアップができました!暗号化しましょう!

password=`date | md5sum | cut -c1-15` 
echo ${password} > /root/folder_name__20180910.pwd && chmod 400 /root/folder_name__20180910.pwd
/root/folder_name__date1.pwd
7z a -mhe=on -p`echo ${password}` \
-t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on \
/path/where/you/like/folder_name__20180910.7z \
/path/where/you/like/folder_name__20180910.tar

ここでは、日付のmd5sumからランダムなパスワードを生成します(さまざまな方法を使用できます)。パスワードをアーカイブに一致するファイルに保存し、圧縮アーカイブを作成した後に/ rootフォルダーに保存します。

最後のステップは、クラウドサービスにリモートでコピーします。ドキュメントを読んで、rcloneのアカウントがremotecopydataとして構成され、必要に応じてremotecopypassword

rclone copy /path/where/you/like/folder_name__20180910.7z remotecopydata:Backup
rclone copy /path/where/you/like/folder_name__20180910.7z remotecopypassword:Backup

[〜#〜] bash [〜#〜]迅速かつ汚い方法でbashに自動化するには、この投稿のコマンドをファイル内で適応させるだけで機能します。制御を追加するには、tlpd.orgでbashのドキュメントを読むか、ここで検索してください。bashコマンドに関する多くの質問が、何かを行う方法です。

毎日真夜中にスクリプトを自動的に実行するには:

crontab -e 

追加します:

[email protected]
0 0 * * * /path/to/your/scrypt.sh

mAILTO =は、構成された電子メールに送信されたスクリプトからのすべてのメッセージを許可します。 スクリプトを自動実行する前にコントロールを追加します

以上で、この投稿がお役に立てば幸いです!

1
AtomiX84

Rsnapshotをインストールすることをお勧めします。構成ファイルでは、次を設定できます。

backup /etc/ localhost/

/ etc /がlocalhost /フォルダーにバックアップされるように設定します。したがって、他のディレクトリをバックアップして別の場所に配置することもできます(ただし、バックアップする予定の各ホストのバックアップ場所を作成することをお勧めします)。

rsnapshotは、シンボリックリンクを使用して増分バックアップを行い、スペースを節約します。したがって、各バックアップは、追加のスペースを使用せずに、問題のディレクトリの完全なバックアップです。

これを自動化するには、cronjobを設定します。実行Sudo crontab -eそして、次のようなルールを追加します。

0 4 * * *         /usr/bin/rsnapshot alpha
0 3 * * 3         /usr/bin/rsnapshot beta
0 2 1 * *         /usr/bin/rsnapshot gamma

これは、毎日アルファバックアップ、水曜日の週1回のベータバックアップ、および月1回のガンマバックアップを行います。もちろん、あなたが望むようにこれを設定します。ドキュメントには、アルファ、ベータ、ガンマ間の順序(1日)を含む推奨事項があります。これまでのところ(これまでのところ)bashスクリプトは必要ありません。 rsnapshotおよびcronは、ここですべてを処理します。

ただし、最後に望むのは暗号化とクラウドへのアップロードです。私は正直にそれを行う方法を知りません-ごめんなさい! Dropboxにバックアップした場合、ファイルを継続的に削除する必要があります... rsnapshotがすでに行っていることです。

targzipを使用してアーカイブおよび圧縮し、gpgを使用して暗号化できると思います。ただし、自宅または職場に別のコンピューターまたはNASがある場合は、単にファイルをコピーすることをお勧めします。または、構成ファイル(/etc/rsnapshot.conf)別のコンピューターをリモートでバックアップできます。すなわち:

backup [email protected]:/etc/ example.com/

外部ドライブをマウント(つまり、接続)し、バックアップしてからマウントを解除するオプションもあります。

とにかく、これがあなたが求めたすべてのものではないことは知っていますが、助けになるといいのですが。

1
Ray