백업에 포함 할 폴더


28

우분투를 처음 접했고 백업을 만들고 싶습니다. 어떤 파일과 폴더를 포함시켜야할지 잘 모르겠습니다. 따라서 시스템을 복원해도 현재 상태가됩니다. 나는 이것에 대한 좋은 세부 사항을 어디서나 찾을 수없는 것 같습니다. 잘하면 누군가 나를 도울 수 있습니다. 시스템 복원의 경우 프로그램 및 설정을 다시 설치할 필요가 없으므로 지금 모든 것을 백업 할 수 있습니까?


예, 전체 드라이브를 백업하지 않고도 중요한 파일이 무엇인지 알고 싶습니다. 크론 탭 (루트 사용자)에 exportfs 등
스리 Sarnobat

답변:


25

내 백업 세트에는 현재

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

이것은 서버를위한 것이므로 / etc 와 같은 것을 백업 하면 서비스에 대한 모든 구성이 저장되고 / srv에 웹 서버 가 있습니다 ( / var / www 에있는 서버는 여전히이 백업 세트에 있습니다) , / usr / local 등에 다양한 스크립트와 것들이 설정되어 있습니다 . / home / myusername 대신 / home을 백업 하면 모든 사용자를 보존 할 수 있습니다. 유지하려는 모든 것이 사용자 데이터 인 경우 홈 디렉토리 만 있으면됩니다.


왜 / root를 포함하고 있습니까?
Mohammed Joraid

2
루트 사용자의 홈 디렉토리입니다. 백업 등을 위해 일부 sysadmin 스크립트를 보관합니다. 이들 중 대부분을 다음으로 옮겼지만/usr/local/sbin/
thomasrutter

.cache각 사용자의 홈 디렉토리 ( ~/.cache)에 폴더 를 포함해야 합니까, 아니면 생략 할 수 있습니까? 수만 개의 파일과 수 기가 바이트의 데이터가 될 수 있습니다. 내 이해는 포함하지 않으면 응용 프로그램이 다음에 실행될 때 다시 캐시 된 임시 파일을 다시 생성해야한다는 것을 의미하며 런타임과 시작 시간은 증가하지만 무해합니다.
가브리엘 스테이 플스

1
~/.cache나에게 소리는 제외 . 나는 그것을 스스로 배제하지는 않지만 데이터 전송 / 동기화 시간을 줄이고 싶다면 옵션이 될 수 있습니다.
thomasrutter

1
@GabrielStaples 사용하지 않지만 사용 /opt하면 백업에 포함시킬 수 있습니다. /opt배포판으로 인해 사용되지 않는 경향이 있지만 사용자에게 /opt배포 할 Linux 시스템을 제공하는 응용 프로그램 공급 업체는 자체 소프트웨어를 사용 하거나 자체 소프트웨어를 개발하는 경우 /opt대신 사용할 수 있습니다./usr/local
thomasrutter

10

백업해야하는 것은 특정 시스템 *에 따라 다릅니다.

따라서이 부분을 정리하려면 약간의 노력이 필요합니다. 백업 할 필요 가 없는 것을 파악하여 시작하십시오 . 먼저 루트 디렉토리를 살펴본 후 뒤로 작업하십시오.

예를 들어, 다음을 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/tmpGET 자동 재부팅에 다시 만들었습니다. [: 나는이 링크 추측하고있어 /initrd.img@, /initrd.img.old@, /vmlinuz@(나는 확실히 어떤 아니에요), 부팅 우분투 다시 설치에 다시 생성 얻을 /vmlinuz.old@~~MD~~aux을.]

내 시스템 /root이 비어 있습니다 ( sudo -s쉘을 보려면 루트 사용자로 쉘을 여는 데 사용 하십시오 ... exit검사 후 즉시 주의 하십시오 /root).

/snap또한 비어 있습니다. 아마도 마운트 포인트 일 것입니다.

/var시스템 로깅 파일, 메일 및 프린터 스풀 디렉토리, 임시 및 임시 파일과 같은 변수 데이터를 포함합니다. "/ var / log를 제외하고 이제 백업합니다. ref : http://www.tldp.org/LDP/Linux- 파일 시스템-계층 구조 /html/var.html )

/bin, /boot, /lib, /lib64, 그리고 /sbin당신이 그와 같은 시스템 개발 작업이나 일을하지 않는 한 아마도 우분투를 다시 설치를 통해 다시로드 얻을 것이다. 이를 백업하거나 새로 설치하여 복구 할 수 있습니다.

/home자체 백업에 있어야합니다. 당신이 단지 복원하고 싶을 때가있을 것입니다 /home.

당신이 시스템에 적용했지만 잎 다른 변화는 /etc, /opt, /srv, 그리고 /usr당신도 함께 또는 개별적으로, 또한 백업 할 것이다.

다음은 이러한 디렉토리를 이해하는 데 도움이되는 몇 가지 페이지입니다.

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


관련된 사고 방식은 다음과 같습니다. 방금 신선한 우분투를 설치 했다고 가정하십시오. 무엇을 백업해야합니까? 답 : 아무것도 아닙니다. 아직 아무것도 변경하지 않았으므로 간단히 Ubuntu를 다시 설치할 수 있습니다. / bin, / etc, / root, / usr 등을 복원합니다.

따라서 / bin을 백업하려는 유일한 이유는 변경했거나 추가했기 때문입니다. 따라서 백업의 일부는 언제 어디서 만들어지고 수정되는지 이해하는 것입니다. 우리 중 나머지 사람들도이 문제로 어려움을 겪고 있음을 아십시오.


***** 그리고 요청하지 않았지만 전체 디스크 또는 파티션 이미지를 만들 수 있습니다. 백업 및 복원에 많은 시간이 걸리며 작업이 진행되는 동안 시스템이 중단 될 수 있습니다. 그리고 Acronis를 사용하여 Windows 시스템을 백업하는 방법입니다. 그들이 제공하는 것 중 하나는 파티션 맵과 비 리눅스 파티션의 이미지입니다. 이제 파티션을 재구성하기 전과 백업 복원 기능을 테스트하기 전에이 작업을 수행합니다.


(나는 이것을 어떻게 더 좋게 만들 수 있는지에 대한 제안에 매우 개방적입니다.)


당신은 그들이 다시 설치할 수 있습니다 말했듯이, 구성에 초점을 맞춘하고 있고 바이너리를 필요로하지 않을 때이 큰이가 다시 설치하려면 수출 및보다 훨씬 가볍다 askubuntu.com/a/55906/104223
CTS_AE

5

데스크탑 시스템을 다시 설치하면 백업됩니다.

  • /etc
  • /var하위 폴더를 제외하기에는 너무 게으르다
  • /opt

/home별도의 파티션에 있으며 매일 백업 됩니다 .

다시 설치 한 후 백업에서 부품을 복원하는데 실제로 필요합니다.

이 전략을 사용하면 모든 구성, 로컬 메일 및 crontab 구성이 안전하며 필요한 응용 프로그램 만 다시 설치해야합니다.

내 개인 스크립트는 내 홈 폴더 (매일 백업, 기억?)에 저장되므로 사용하지 않습니다 /usr/local.


1
루트를 백업하면 작동합니까? 그게 전부입니까? : ./
Suspended

그것은 내가 지금 사용하고있는 것의 복제와 같습니다.
중단

/opt우리에게 필요한 것은 무엇입니까 ? 즉 : 왜 그것을 백업?
가브리엘 스테이 플스

3

대부분의 사람들은 홈 디렉토리를 백업합니다 /home/$USER/. 구성 파일 및 설정을 백업하려면 홈 디렉토리의 폴더 및 파일에로 시작합니다. (점). 사용하는 패키지 (및 PPA) 목록을 작성하면 필요한 경우 모든 패키지를 쉽게 다시 설치할 수 있습니다. 또는 설명에 설명 된 명령을 사용하십시오 .

Deja Dup Backup은 우분투에서 기본으로 제공되는 훌륭한 도구입니다. 다른 옵션으로는 명령 줄 (rsync, rsnapshot, rdiff-backup 등)이 있습니다.

마지막으로 전체 디스크를 이미지로 백업하려면 clonezilla를 확인하십시오 .


2
또한 응답 psny가 링크 한 것 외에도 시스템 전체 설정을 저장하는 전체 / etc / 디렉토리의 백업을 만드는 것이 아프지 않습니다. 거기에서 약간의 변경을 한 경우, 변경 사항을 가져 오기 위해 아카이브를 갖는 것이 도움이 될 것입니다.
Marcin Kaminski

2
crontabs 설정이 있으면 백업 /var/spool/cron도 수행하십시오.
Ian Dunn

3

여기에서 파일 목록을 수집합시다. 이 게시물을 "커뮤니티 위키"로 만들었습니다.

물론 사람마다 다릅니다. 광산은 주로 웹 서버 및 NFS 서버로 사용됩니다.

mkdir $MY_BACKUP_FOLDER
cd $MY_BACKUP_FOLDER

크론 탭

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

NFS 공유

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

Sudoers

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

아파치 설정

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 .

체계적

이동하다

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

데비안 런처 ( "시작 메뉴") .desktop 파일 설정 한 사용자 지정 항목 :

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

우분투를 다시 설치하면 홈 디렉토리를 유지할 수 있습니다


1

DejaDup (또는 실제로 다른 것)을 사용하는 경우 Dropbox와 같은 클라우드 저장소 폴더 (예 : 가정에서)도 제외하십시오. s3 스토리지 비용을 지불하는 경우 이는 잘못된 실수 일 수 있습니다.


0

Deja Dup 백업을 사용하십시오. 기본적으로 제공됩니다. 설정으로 이동하여 루트 폴더 ( /) 만 "포함 할 폴더 /media"로 유지하고 "무시할 폴더"에 미디어 폴더 ( )를 추가하십시오 .

이로 인해 일반적으로 영향을받지 않는 다른 드라이브를 제외하고 시스템 손상 (희귀)이 발생하면 모든 프로그램이 백업됩니다.


0

나는 지적 재산으로 느슨하게 정의 될 수있는 중요한 것을 백업하고 Ubuntu를 완벽하게 작동하도록 구성하는 노력을 (나를 위해) 수행했습니다.

매일 오전 4시에 또는 랩톱이 일시 중지 상태에서 다시 시작될 때마다 백업이 실행됩니다. /etc/cron.daily스크립트를 통해 제어됩니다 .

컴퓨터가 앉아있는 곳에서 화재 나 홍수가 발생하는 경우 최상의 백업 유형은 오프 사이트이므로 무료 15GB gmail.com 계정을 이용하여 압축 된 일일 백업을 보내십시오.

몇 년 후 15GB "무료"할당량에 도달하여 백업을 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_NAME@gmail.com"

# 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 -- mymail@gmail.com
# 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.