Linuxサーバーをバックアップして、別のサーバーに保存しています。
私はシンプルで始めました
rsync -aPh --del server.example.com:/ /mnt/backup
次に、あるサーバーの/proc
を別のサーバーに復元したくないので、/proc
をバックアップすべきではないと誰かが指摘しました。
他に含める/含めるべきでないものはありますか?
たとえば、/sys
はどうですか?
これは、実際にシステムを復元する方法に依存します。再構築する場合は、サービスの構成/データファイルのみが必要です(例:/ etc、/ opt、/ var、/ home)
システム全体を復元した後は、/ proc、/ boot、/ devを省略できます。次に、ブートメディアから最小OSをインストールし、バックアップを介してシステムを復元できます。
もちろん、最適なバックアップはtestedおよびverifiedであるバックアップです。
したがって、必要と思わないものは省略し、VMで復元を試み、このデータを使用してシステムを回復できることを確認してください。
/proc
と/sys
はどちらも、システムの状態を反映する仮想ファイルシステムであり、いくつかのランタイムパラメータを変更できます(メモリやデバイスに直接書き込むなど、より危険なことを行う場合もあります)。それらをバックアップしたり復元したりしないでください。
最近のほとんどのディストリビューションでは、/dev
は起動時に動的に作成されます(これはudev
およびその仲間によって埋められたメモリファイルシステムです)。それをバックアップする意味はなく、それを復元しようとしても無駄です。ただし、ディストリビューションが静的/dev
を使用するように構成されている場合、これは適用されません(/proc/mounts
がtmpfs
の場合は、メモリファイルシステムです)/dev
を確認してください)。
バックアップすべきでない他のファイルシステムがあります。 usbfs
(通常、マウントされている場合は/proc/bus/usb
にあります)、debugfs
(マウントされている場合は/sys/kernel/debug
にあると考えられますが、他の場所に置いている人もいるでしょう。おそらくこれはありません) 、devpts
(/dev/pts
にマウント)、他のtmpfs
インスタンス(/dev/shm
、/var/run
、/var/lock
、およびその他の場所でよく見られます。それらのバックアップと復元は、内容として無害ですが無意味でなければなりません。シャットダウン時に失われます)、およびリモートファイルシステムまたはマジックオートマウンターディレクトリ(バックアップまたは復元しようとすると、別のマシンにバックアップ/復元する可能性があるため、惨事になる可能性があります)。また、/media
と/mnt
にも注意する必要があります。ドライブに忘れたCDなどの外部デバイスがそこにある可能性がありますが、バックアップする必要があるものをマウントする目的でそれらを使用した可能性もあります。
ほとんど無害なtmpfs
インスタンス、ネットワークファイルシステム/オートマウンタ、リムーバブルメディアを除いて、バックアップすべきではないファイルシステムはすべて/dev
、/proc
、または/sys
の子孫であることに注意してください。ネットワークファイルシステム(またはオートマウンター)がなく、リムーバブルメディアがない場合は、/sys
と/proc
を除いて、復元後に再起動(tmpfs
インスタンスをワイプする)で十分です。
第1章 The Tao Of Backup を参照してください。
/ procおよび/ sys内の一部の特殊ファイルは、rsyncを混乱させます。通常、マウントされたネットワークファイルシステムもバックアップしたくありません。スパースファイルも問題を引き起こす可能性があります。
-xを追加して、1つのファイルシステムに制限します。これにより、すべてのネットワークファイルシステムや/ procなどが回避されます。ただし、マウントしたファイルシステムごとに1つのrsyncを実行する必要があります。
スパースファイルを適切に処理するには、-Sを追加します。
/ boot、/ dev、および/ procはバックアップにはまったく役に立ちません。ただし、実行していることがわかっている場合は、/ bootをバックアップできます。
/ lib、/ media、/ mnt、/ sbin、/ bin、/ srv、/ sys、または/ tmpもバックアップしません。
/ usrはオプションです。バックアップする価値のあるものが/ usrにあるかどうかによって異なります。私があなただったら、ユーザーの$ HOME、/ var、および/ etc(構成ファイル用)のバックアップについて最も心配しました。
繰り返しますが、これは本当にすべて、実行するバックアップのtypeに依存します。これはWebサーバーですか?これはパソコンですか?これは、/ homeの下に多数のディレクトリを持つシェルサーバーですか?
Sfdiskとddを使用して、完全なバックアップを実現できます。
各ハードドライブのパーティション構成をバックアップするには、次のようにsfdiskを使用します。
sfdisk -d /dev/sda > parttable_sda.part
各パーティションをバックアップするには、次のようにddを使用できます。
dd if=/dev/sda1 of=devsda1.img
どこ /dev/sda1
は、ライブCDブートなどでマウント解除されます。
(このファイルを書き込むには、多くの空き領域が必要になることに注意してください。外部メディアに書き込むことができます)パーティションごとに1つずつ行い、すべてをバックアップします。
次に、別のコンピューターで復元するには、次のようにします。
sfdisk /dev/sda < parttable_sda.part
dd if=devsda1.img of=/dev/sda1 # do this for each partition
除外するのではなく、通常は必要なものだけをバックアップします。含む:/home
/etc
/var
(/var/log
を除く)
基本的に、疑似ファイルシステム(/ proc、/ sys、/ dev/shm ...)をバックアップする必要はありません。
私はUbuntu 18.04マシンを使用していますが、これらは除外されています。
/dev/
/proc/
/sys/
/tmp/
/run/
/mnt/
/media/
/lost+found/
/cdrom/
/swapfile
また、特に私のセットアップでは、これらを除外します:
/home <-- Backed up separately
/backup <-- Mount point for backup disks
/data <-- Mount point for data disks, which are backed up off-site
/scratch <-- Mount point for volatile fast SSD scratch disk
この素晴らしいコミュニティによって指摘されたように:
/ dev/proc/sys/tmp/run/media/lost + found/boot(/ bootはオプションです。他のコメントを参照してください)
参考までに、私の最後のrsyncコマンド( '/ run/media/fred/INTENSO /'にマウントされた外部メディアを持つArchの下で、 'fred'という名前のフォルダーにバックアップする)は次のとおりです。
$ Sudo rsync -Pazhmxv --exclude/run/media --exclude/dev --exclude/lost + found --exclude/tmp --exclude/proc --exclude/boot --exclude/sys// run/media /フレッド/ INTENSO /フレッド/。
(除外されたファイルは、Bashの下の波括弧(--exclude = {/ dev、/ proc})またはテキストファイル(--exclude-from = 'excude.txt')で指定することもできます)。
-P:進行状況を表示-a:アーカイブモード-z:転送中に圧縮-h:数値を人間が読める形式で出力-m:空のディレクトリを削除-x:1つのファイルシステムに制限-v:詳細
質問:サーバーをバックアップするときに、どのディレクトリを除外すればよいですか?
これは、Ubuntu 16.04 LTSラップトップからUbuntu 16.04 LTSサーバーまで、私が頻繁に使用するスクリプトです。これは、完全バックアップの作成中にスキップする必要があるディレクトリを明確に示しています。
echo "EMPTYING TRASH"
rm -rf ~/.local/share/Trash/* >/dev/null 2>&1
echo "DELETING OLD LOGS"
Sudo rm -f /var/tmp/* >/dev/null 2>&1
Sudo rm -f /var/log/*.gz >/dev/null 2>&1
Sudo rm -f /var/log/kern* >/dev/null 2>&1
Sudo rm -f /var/log/messages* >/dev/null 2>&1
echo "DELETING CHROMIUM CACHE"
rm -rf /home/pi/.cache/chromium/Default/Cache/* >/dev/null 2>&1
echo "====================================================================="
echo " BEGINNING RSYNC from PAV root to PRIME5:/mnt/full/pav"
echo "====================================================================="
time Sudo rsync -aAXv \
/ \
--bwlimit=500 \
--delete \
--delete-excluded \
--ignore-errors \
--exclude="/dev/*" \
--exclude="/proc/*" \
--exclude="/sys/*" \
--exclude="/tmp/*" \
--exclude="/run/*" \
--exclude="/mnt/*" \
--exclude="/media/*" \
--exclude="/lost+found" \
abc@prime5:/mnt/full/pav
echo "====================================================================="
df -h
/mnt
の除外に注意してください。これは、各Ubuntuシステムに、1日4回cronベースのrsync
自己バックアップ用にフルタイムバックアップドライブがマウントされている場所です。これらのドライブは、fstab
のエントリによってマウントされ、常に存在します。それらを別のシステムへのバックアップに含めることは重複します。
同様に、/media
はUSBドライブがマウントされる場所です。それらは個別にバックアップされます。
仮想マシンにLinuxがないと思います。可能であれば、仮想化への移行を検討することをお勧めします。 VMレベルのバックアップは、まったく新しいレベルの一貫性と使いやすさです。無料の仮想化ツールが存在するため、必ずしもVmWareやその他の高価なモンスターツールに投資する必要はありません。
私は、Ubuntu LinuxボックスをWebサイト開発用のテストサーバーとして使用し、ドキュメントWikiをホストしています。毎晩crontabがMySQLデータベースを/ var/wwwにダンプし、次に/ var/wwwのすべてが圧縮されてバックアップサーバーに複製されます。理想的ではありませんが、それで十分です。ある時点でサーバーを再構築する必要があり、本当に見逃したのはApacheとSambaの構成ファイルだけでした。
私は通常、システム上ですべてをバックアップする習慣をつけています。セットアップは簡単で、必要なすべてのものがバックアップに含まれることを100%確信できます。