DSMシステムは非常に便利で、デフォルトでは、「すぐに使える」と呼ばれる普通の(そうではない)ユーザーのニーズの95%をカバーするモジュールがシステムにインストールされます。
組み込みのバックアップシステム、バックアップとレプリケーションもあります。 シンプルで明確で信頼性の高い。 ネットワーク宛先として、同様のSynologyサーバーまたはrsyncサーバーを使用できます。
残念ながら、このシステムは増分バックアップの方法を知りません。 これを回避する最も基本的な方法は、曜日ごとに個別のバックアップを設定することです。 したがって、バックアップを含む7つのフォルダーがありますが、明らかなマイナスは、各フォルダーに完全なコピーを保存することです。
だから-完全増分バックアップを設定します。
まず、重要なデータのアーカイブを保存するのに十分なディスクを備えたサーバーが必要です。 それが正確にインストールされる場所-それは皆の能力に依存します。 たとえば、共有ホスティング、古いシステムユニット、または稼働中のコンピューター上の仮想マシンなどです。 アーカイブサーバーの信頼性については議論の余地がありますが、その存在自体が個人データの安全性にとって大きなプラスです。 繰り返しになりますが、DSMでメール通知を有効にすると、バックアップ中にエラーが発生したかどうかを毎日把握し、「落ちた」サーバーをすぐにバックアップできます。
サーバーがSynologyと通信する方法(またはその逆)は、全員が自分で選択します。これは、VPN、ローカルエリアネットワーク、または通常のインターネットです。 私はVPNを好みますが、接続設定の説明はこの記事の範囲外です(微妙な違いがあるかもしれません。これについては後で説明します)。
これで、アーカイブが保存されるディスクのサイズ。
ホームストレージのコンテンツは、自信を持って映画、音楽、写真、通常のユーザーファイルに分けることができます。
また、シネマデータが失われた場合、再びダウンロードすることが可能かつ困難ではない場合、音楽-高い確率で、写真および個人ファイルを復元できなくなります。 私の個人的な経験からのそのようなデータの量は50-100GBを超えません。 たとえば、毎日および毎週のバックアップを行います。 最大で100GB + 100GBになります-200GBのディスクが必要です。 思う? 現在、これはまれですが、500GBは簡単に見つけることができます!
次に、仮想マシンの例について説明しますが、主なアイデアはすべてのLinuxベースのシステム(おそらくFreeBSD)に適用されます。
だから-Ubuntuサーバーをインストールし、SSHとrsyncを有効にします:
ファイルシステムにはハードリンクサポートが必要です。 したがって、デフォルトで提案されているext-4のままにしておきましょう。
原則として、rsyncはWindowsでも実行できますが、ハードリンクのサポートが必要であり、rsyncがWindows Junctionで正しく動作するかどうかはわかりません。
サーバーのセキュリティモデルについて明確にします-それは非常に簡単です:
-ログイン用の別のユーザー(Synologyの場合)
-rsync IPアドレスのフォルダー制限
-rsyncレベルでのユーザー検証-なし。ただし、簡単に構成できます。
-サーバーが信頼性の低いネットワークにある場合、ファイアウォールを有効にし、IPによるアクセスを制限することをお勧めします。
セットアップを開始します-アーカイブを保存するフォルダーを作成し、すべてのユーザーに権限を付与します。
$sudo mkdir -p /bakstorage/syno $sudo chmod 777 /bakstorage/syno
サーバー上で、Synologyがアーカイブコピーを保存する通常のユーザーを作成する必要があります。
$sudo adduser backup
rsync設定を編集します。
cat /etc/rsyncd.conf # : motd file=/etc/motd log file=/var/log/rsyncd # [syno] # IP address Synology hosts allow = 192.168.xx # , comment = Syno archive # , path = /bakstorage/syno # use chroot = yes lock file = /var/lock/rsyncd read only = no list = yes uid = nobody gid = nogroup strict modes = yes ignore errors = no ignore nonreadable = yes transfer logging = no timeout = 600 refuse options = checksum dry-run dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
そして、それをスタートアップに入れます:
$sudo update-rc.d rsync defaults
再起動し、すべてが上昇したことを確認します。
次に、DSMでアーカイブを構成します。 ネットワークバックアップ先を作成します。
「データバックアップタスク」を作成してから、毎日のバックアップ用のタスクを作成します。 保存するフォルダーをマークします。
アプリケーションにマークを付けます(オプション):
そして最も重要なこと-私たちは毎日それを作ります(最後のオプション):
メインアプリケーションウィンドウに移動し、作成したタスクを選択して[今すぐバックアップ]をクリックします。最初のコピーには時間がかかります。 後続のファイルははるかに高速に実行されます-新しいファイルまたは変更されたファイルのみが転送されます。
コピーが構成されて動作した後(数日間見ることができます)-次の部分に進み、増分コピーを追加します。 これを行うには、優れたrsyncプロパティを使用します。
元のファイルが変更され、宛先ファイルがハードリンクである場合、ハードリンクをコピーすると「壊れ」、宛先ファイルは変更されたバージョンに置き換えられます。
前述のrsyncプロパティに基づいて、必要なのは、バックアップが完了した後のコマンドでアーカイブフォルダーのコピーを作成することだけです: cp -al
これにより完全なコピーが作成されますが、内部のすべてのファイルはハードリンクになるため、余分なディスク領域は使用されません。 おそらく、ディレクトリとサブディレクトリのツリーの下にあります。 これをスナップショットの作成と呼びます。 ちなみに、100GBフォルダーの場合、スナップショットの作成には1分もかかりません。
このコマンドは、バックアップの想定完了後、またはたとえば1時間前など、いつでも実行できます。
したがって、バックアップが3:00に開始して6時間続く場合(非常に好ましくないシナリオ-通常、すべての変更が1桁速くコピーされます)、午前10時にスナップショットを作成し、日中にすべてが正常に機能したことを確認できるようにします。
次のステップでは、N個のスナップショットを保存し、最も古いスナップショットを自動的に削除します。 ところで、この削除を実装すると、通常、N日より古いフォルダーが削除されます。 ただし、(さまざまな理由で)長期間アーカイブが行われていない場合、アーカイブのあるすべてのフォルダーが古いものとして削除される可能性がありますが、新しいフォルダーはありません! したがって、私たちはこれを学んでいます。
以下は、この作業をすべて行うスクリプトです。
sudo cat /root/rotate_daily.sh #!/bin/bash # echo -n "Started: " date # , , , if [[ /bakstorage/syno/daily -nt /bakstorage/syno/daily_full ]]; then # - «» /root/rotate_folders.sh /bakstorage/syno/daily_full 3 # echo "Copying current backup..." cp -al /bakstorage/syno/daily /bakstorage/syno/daily_full else # - — echo "No today backup found!" fi
sudo cat /root/rotate_folders.sh #!/bin/bash # ver 1.0 path=$1 hold=$2 if [ -z $2 ]; then cat <<EOT Rotate folders script. Usage: $0 <path_to_folder_prefix> <folders_to_hold> Warning! Folders deleted and renamed by mask: path_to_folder_prefix* so please be sure that no any folders in the path Example: $0 /var/backup/daily 2 The result will be: /var/backup/daily -> /var/backup/daily.1 /var/backup/daily.1 -> /var/backup/daily.2 /var/backup/daily.2 -> Deleted EOT exit 1 fi num=$(ls -d $path* | wc -l) let "num=num-hold" if [ $num -gt 0 ]; then echo "ROTATE_FOLDERS: Found to delete: $num" del=$(ls -d $path* | sort | tail -n $num) echo "ROTATE_FOLDERS: Deleting folder(s):" echo "$del..." rm -r $del else echo "ROTATE_FOLDERS: Nothing to delete." fi # rename let "start=$hold-1" for i in $(seq $start -1 0); do let "y=i+1" if [ $i -eq 0 ]; then echo "ROTATE_FOLDERS: Renaming folders $path to $path.1 ..." mv "$path" "$path.1" else echo "ROTATE_FOLDERS: Renaming folders $path.$i to $path.$y ..." mv "$path.$i" "$path.$y" fi done
両方のスクリプトを実行可能にすることを忘れないでください:
chmod 750 /root/rotate_folders.sh chmod 750 /root/rotate_daily.sh
cronに追加:
$sudo crontab -e 0 10 * * * /root/rotate_daily.sh >>/var/log/rotate_daily.log 2>&1
すべての出力はファイル/var/log/rotate_daily.logに書き込まれることに注意してください。
実際、毎日すべてをコピーします!
毎週のバックアップを追加する場合は、次の2つの方法があります。
1.類推により、毎日と並行して設定します。 したがって、毎週、weekly.1、weekly.2などの完全に独立したフォルダーのセットがあります。 毎日のフォルダーと重複することはありません。 ただし、この場合、毎日のアーカイブと同じ量のディスク容量を占有します。
2.スクリプトを変更し、週に1回、毎日のフォルダーの追加のスナップショットを毎週のフォルダーに作成してから、毎週のフォルダーの名前をweekly.1、weekly.2などに変更します。非常に少数ですが、ファイルが破損した場合、すべてのフォルダーで一度に破損します!
ところで、上記の手法は、Synology DSMのバックアップだけでなく、rsyncとハードリンクをサポートするすべてのシステムに適用できます。
素敵な設定をしてください!