web-dev-qa-db-ja.com

バックアップに含めるフォルダー

私はUbuntuを初めて使用するため、バックアップを作成したいと考えています。どのファイルやフォルダーを含めるべきか本当にわからないので、システムを復元した場合、現在の状態になります。私はどこでもこれの良い詳細を見つけることができないようです。うまくいけば誰かがこれで私を助けることができます。現在のようにすべてをバックアップすることは可能ですか?システムの復元の場合、プログラムと設定を再インストールする必要はありませんか?

28
Jason

現在のバックアップセットには

/etc
/home
/root
/srv
/usr (/usr/local only, nothing else)
/var (except /var/run, /var/cache, /var/tmp)

これはサーバー用であるため、/ etcのようなものをバックアップすると、私のサービスのすべての構成が保存され、Webサーバーは/ srvにあります(ただし、 / var/www、これらはまだこのバックアップセットにあります)、/ usr/localなどにさまざまなスクリプトと設定があります。バックアップ/ home/ home/myusernameの代わりに、すべてのユーザーを保持できます。保持する必要があるのがユーザーデータのみである場合は、ホームディレクトリのみが必要です。

24
thomasrutter

バックアップする必要があるものは、特定のシステム*によって異なります。

ですから、これは整理するためにあなたの側で少し作業が必要です。バックアップする必要があるnotを理解することから始めます。最初にルートディレクトリを確認してから、逆方向に作業します。

たとえば、cd /; ls -Fは以下を提供します。

bin/    initrd.img@      mnt/   snap/  vmlinuz@
boot/   initrd.img.old@  opt/   srv/   vmlinuz.old@
cdrom/  lib/             proc/  sys/
dev/    lib64/           root/  tmp/
etc/    lost+found/      run/   usr/
home/   media/           sbin/  var/

/cdrom/media、および/mntはマウントポイントであるため、バックアップは不要です。

/dev/lost+found/proc/run/sys、および/tmpは、再起動時に自動的に再作成されます。 [リンクを推測しています:/initrd.img@/initrd.img.old@/vmlinuz@、/vmlinuz.old@は、ブートubuntuの再インストール時に再作成されます(どちらかはわかりません)。

私のシステムでは/rootが空です(Sudo -sを使用して、シェルをrootユーザーとして開いて表示します... /rootを検査した直後にexitに注意してください)

/snapも空です。おそらく、マウントポイントです。

/varには、システムロギングファイル、メールとプリンターのスプールディレクトリ、一時ファイルと一時ファイルなどの変数データが​​含まれています。 "/ var/logを除き、バックアップしました。ref: http:// www .tldp.org/LDP/Linux-Filesystem-Hierarchy/html/var.html

/bin/boot/lib/lib64、および/sbinは、システム開発作業などを行っている場合を除き、Ubuntuの再インストールによっておそらく再ロードされます。 。これらをバックアップするか、新規インストールを使用してそれらを回復できます。

/homeは、独自のバックアップ内にある必要があります。 /homeのみを復元したい場合があります。

/etc/opt/srv、および/usrでシステムに加えた他の変更は、一緒にまたは個別にバックアップします。

これらのディレクトリを理解するのに役立つかもしれないページがいくつかあります:

http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/the-root-directory.htmlhttp://www.tldp.org/LDP/ intro-linux/html/sect_03_01.html#sect_03_01_


関連する考え方は次のとおりです:新しいUbuntuをインストールしたとしましょう。何をバックアップする必要がありますか?答え:何もありません。まだ何も変更していないので、単純にUbuntuを再インストールできます。/bin、/ etc、/ root、/ usrなどを復元します。

したがって、/ binをバックアップする唯一の理由は、変更または追加したためです。そのため、バックアップの一部は、作成および変更された場所と時期を理解することです。残りの人たちもこれに苦労していることを知ってください。


*****そして、あなたは尋ねなかったけれども、人はフルディスクまたはパーティションイメージを作ることができます。これらはバックアップと復元に時間がかかり、作業の進行中にシステムが停止する可能性があります。そして、Acronisを使用してWindowsシステムをバックアップする方法です。彼らが提供するものの1つは、パーティションマップと非Linuxパーティションのイメージです。パーティションを再編成する前、およびバックアップ復元機能をテストする前に、これらを作成します。


(私はこれをどのように改善できるかについての提案に非常にオープンです。)

10
Elliptical view

デスクトップシステムを再インストールする場合、バックアップします

  • /etc
  • /var、私は怠けすぎていくつかのサブフォルダを除外できません
  • /opt

/homeは別のパーティションにあり、バックアップが作成されています毎日

再インストール後、バックアップからパーツを復元します。これは本当に必要です。

この戦略では、すべての構成、ローカルメール、およびcrontab構成が安全であり、必要なアプリケーションのみを再インストールする必要があります。

個人用スクリプトはホームフォルダーに保存されます(毎日のバックアップ、覚えていますか?)。したがって、/usr/localは使用しません。

5
A.B.

ここでファイルのリストを収集しましょう。この投稿を「コミュニティwiki」にしました。

もちろん、それは人によって異なります。鉱山は、主にWebサーバーおよびNFSサーバーとして使用されます。

mkdir $MY_BACKUP_FOLDER
cd $MY_BACKUP_FOLDER

crontab

Sudo rsync -a --relative /var/spool/cron/crontabs .

NFS共有

Sudo rsync -a --relative /etc/exports .

sudoers

Sudo rsync -a --relative /etc/sudoers .

Apacheの構成

Sudo rsync -a --relative /etc/Apache2/Apache2.conf .

autofs

Sudo rsync -a --relative /etc/auto* .

fstab

Sudo rsync -a --relative /etc/fstab .

ホスト

Sudo rsync -a --relative /etc/hosts .

サンバ

Sudo rsync -a --relative /etc/samba/smb.conf .

USBデバイス(udev)ルール

Sudo rsync -a --relative /etc/udev .

systemd

配置する

Sudo rsync -a --relative /etc/updatedb.conf .

Ubuntuランチャー(「スタートメニュー」).desktopファイル、含む。設定したカスタムのもの:

Sudo rsync -a --relative /usr/share/applications .

ubuntuの再インストールを行うと、ホームディレクトリを保持できます

3

ほとんどの人は、ホームディレクトリ/home/$USER/をバックアップするだけです。構成ファイルと設定をバックアップする場合、それらは、ホームディレクトリ内ので始まるフォルダーとファイルに保存されます。 (ドット)。使用するパッケージ(およびPPA)のリストを作成すると、必要に応じてすべてのパッケージを簡単に再インストールできます。または、 this comment で説明されているコマンドを使用します。

Deja Dup Backupは、Ubuntuのデフォルトとして提供される優れたツールです。その他のオプションには、コマンドライン(rsync、rsnapshot、rdiff-backupなど)が含まれます。

最後に、ディスク全体をイメージとしてバックアップするには、 clonezilla をチェックしてください。

3
philshem

DejaDup(または実際に他の何か)を使用している場合は、Dropboxなどのクラウドストレージフォルダー(おそらくあなたの家にある)も除外してください。 s3ストレージに料金を払っている場合、これは悪い間違いかもしれません。

1
kdford

Deja Dupバックアップを使用します。デフォルトで提供されます。設定に移動し、「含めるフォルダー」としてルートフォルダー(/)のみを保持し、[無視するフォルダー]にメディアフォルダー(/media)を追加します。

このため、通常は影響を受けない他のドライブを除き、システムが破損した場合(まれに)、すべてのプログラムがバックアップされます。

0
VedVals

私にとって重要なことをバックアップします。これは、私の知的財産と、Ubuntuが完全に動作するように構成することに費やされた努力として大まかに定義できます(私にとって)。

毎朝午前4時に、またはラップトップがサスペンドから再開するたびにバックアップを実行します。 /etc/cron.dailyスクリプトによって制御されます。

最高の種類のバックアップは、コンピューターが置かれている火災や洪水の場合はオフサイトであるため、15GBの無料のgmail.comアカウントを利用して、圧縮された毎日のバックアップをそこに送信します。

数年後、15 GBの "無料"クォータに達したので、バックアップを180日、78週間、36か月、100年のバックアップにリサイクルするスクリプトを書きました。

これが 毎日のバックアップスクリプト 私にとって重要なものです:

#!/bin/bash

# NAME: daily-backup.sh
# PATH: /mnt/e/bin
# DESC: Backup scripts, documents and configuration files to .tar

# DATE: July 11, 2017. Modified July 7, 2019.

HomeDir="/home/USER_NAME"                    # Required for cron compatibility
EmailAddr="[email protected]"

# PARM: 1=backup file name. Extension .tar.gz automatically appended.

# NOTE: To include MBR (Master Boot Record) in backup create an image using:
#       Sudo dd if=/dev/sda of="$HOME/.mbr.sav" bs=512 count=1

# NOTE: CLONE CURRENT INSTALLATION TO NEW MACHINE
#       =========================================

#       To restore use Live USB to install Ubuntu alongside Windows 10
#       Connect to network with password xxxxxxxxx

#       Install Google Chrome
#       (https://askubuntu.com/questions/510056/how-to-install-google-chrome):

#           wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub 
#               | Sudo apt-key add
#           echo 'deb [Arch=AMD64] http://dl.google.com/linux/chrome/deb/
#               stable main' | Sudo tee /etc/apt/sources.list.d/google-chrome.list
#           Sudo apt update
#           Sudo apt install google-chrome-stable

#       Open gmail.com and download attachment `$1` which is usually called
#           Backup-yymmdd-DayOfWeekName.tar

#       Make missing home/bin directory which tar doesn't create automatically:
#           mkdir ~/bin

#       Restore the daily backup using:
#           Sudo tar -xvf Backup-yymmdd-DayFfWeekName.tar -C /
#           yar -xvf Backup-yymmdd-DayFfWeekName.tar -C /

#       Patch /etc/default/grub with new machine parameters, ie for nvme use:
#           acpiphp.disable=1

#       Use `Sudo apt install aptitude-common`
#       Clone packages using `aptitude-create-state-bundle` on Source
#       Copy state-bundle.tar file from Source to Target machine
#       Restore packages using `aptitude-run-state-bundle` on Target

#       Manually copy ~/Pictures, ~/Videos, etc. not in daily backup.

#       Sudo update-grub        # NVMe suspend/resume acpiphp.disable=1
#       Sudo update-initramfs   # to get plymouth sunrise splash screen

if [[ $# -ne 1 ]]; then
    echo 'One argument required for file name, e.g. "Backup-2017-10-21-Saturday"'
    echo '.tar will automatically be added as a file extension'
    exit 1
fi

Filename="$1.tar"

cd $HomeDir ||
    exit 1

dpkg --get-selections > .packages       # List of installed applications

tar -cvpf "$Filename" bin               # create .tar & add user scripts
tar -rvpf "$Filename" .config/autostart # autostart programs configuration
tar -rvpf "$Filename" /usr/local/bin    # add global root-based scripts
tar -rvpf "$Filename" /etc/cron*        # crontab, cron.d, cron.daily, etc
tar -rvpf "$Filename" /etc/system*      # systemd files: login.conf, etc.
tar -rvpf "$Filename" /lib/systemd/system-sleep
tar -rvpf "$Filename" /etc/rc.local     # Startup script: calls zaprestore.
tar -rvpf "$Filename" /etc/sudoers      # 120 minute Sudo, stars in password
tar -rvpf "$Filename" /etc/environment  # PATH backup
tar -rvpf "$Filename" /etc/default/grub # bootstrap loader
#July 20, 2018 - /boot/grub takes 5MB+
#tar -rvpf "$Filename" /boot/grub        # Custom grub fonts and splash...
tar -rvpf  "$Filename" /usr/share/plymouth   # ... screen (plymouth)
#included above tar -rvpf "$Filename" /usr/share/plymouth/themes/earth-sunrise/
tar -rvpf "$Filename" /usr/share/grub/themes/Tuxkiller2/
tar -rvpf "$Filename" /etc/grub.d       # 00_header, etc. changes
tar -rvpf "$Filename" Desktop           # files and links on desktop
tar -rvpf "$Filename" Documents/*.od*   # Libre Office: *.ods, *.odt, etc.

# Trusted keys to install from third party PPAs
tar -rvpf "$Filename" /etc/apt/trusted.gpg
tar -rvpf "$Filename" /etc/apt/trusted.gpg.d

# Sources for repositories - 1) Main single file - 2) directory of files
tar -rvpf "$Filename" /etc/apt/sources.list
tar -rvpf "$Filename" /etc/apt/sources.list.d

# find all $HOME/.config files and add to .tar
find .* -maxdepth 0 -type f -exec tar -rvf "$Filename" {} +

# Nautilus custom scripts
tar -rvpf "$Filename" .local/share/nautilus/scripts

# /etc/udev rules
tar -rvpf "$Filename" /etc/udev/rules.d

# /etc/rc.local
tar -rvpf "$Filename" /etc/rc.local

# /etc/X11/xorg.conf.d
tar -rvpf "$Filename" /etc/X11/xorg.conf.d

# /mnt/e - shared WSL + Linux
tar -rvpf "$Filename" /mnt/e/bin
tar -rvpf "$Filename" /mnt/e/Documents

# ~/eyesome - Development version
tar -rvpf "$Filename" eyesome

# ~/gmail - Python and Bash scripts but NOT huge data files
tar -rvpf "$Filename" gmail/*.py
tar -rvpf "$Filename" gmail/*.sh
tar -rvpf "$Filename" gmail/go
tar -rvpf "$Filename" gmail/BackupSets
tar -rvpf "$Filename" gmail/BackupDays

echo "Complete file list with sizes..."
tar -tvf "$Filename" > BackupLog    # list filenames and sizes
chmod a+w BackupLog                 # give user delete access

echo "Compressing with gzip..."
gzip "$Filename"
Filename="$Filename.gz"

echo "Emailing: $EmailAddr"

# From: https://internetlifeforum.com/gmail/2251-gmail-some-file-types-blocked-fix-how-go-around/
# cat archive.tar.gz | base64 > file
# then i sent the file via email:
# echo "Base64 encoded file" | mutt -a file -s subject -- [email protected]
# then mail was delivered properly! Then when one need to get readable archive 
# again, he need to decode it by base64. In my case i do it via linux command line:
# cat file | base64 -d > decodedarchive.tar.gz

Filename64="$Filename.64"
cat "$Filename" | base64 > "$Filename64"
mail -a "$Filename64" -s "$Filename64" "$EmailAddr" < BackupLog

ls -la "$Filename" "$Filename64"
rm     "$Filename" "$Filename64"

exit 0
0