답변:
내 백업 세트에는 현재
/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을 백업 하면 모든 사용자를 보존 할 수 있습니다. 유지하려는 모든 것이 사용자 데이터 인 경우 홈 디렉토리 만 있으면됩니다.
/usr/local/sbin/
.cache
각 사용자의 홈 디렉토리 ( ~/.cache
)에 폴더 를 포함해야 합니까, 아니면 생략 할 수 있습니까? 수만 개의 파일과 수 기가 바이트의 데이터가 될 수 있습니다. 내 이해는 포함하지 않으면 응용 프로그램이 다음에 실행될 때 다시 캐시 된 임시 파일을 다시 생성해야한다는 것을 의미하며 런타임과 시작 시간은 증가하지만 무해합니다.
~/.cache
나에게 소리는 제외 . 나는 그것을 스스로 배제하지는 않지만 데이터 전송 / 동기화 시간을 줄이고 싶다면 옵션이 될 수 있습니다.
/opt
하면 백업에 포함시킬 수 있습니다. /opt
배포판으로 인해 사용되지 않는 경향이 있지만 사용자에게 /opt
배포 할 Linux 시스템을 제공하는 응용 프로그램 공급 업체는 자체 소프트웨어를 사용 하거나 자체 소프트웨어를 개발하는 경우 /opt
대신 사용할 수 있습니다./usr/local
백업해야하는 것은 특정 시스템 *에 따라 다릅니다.
따라서이 부분을 정리하려면 약간의 노력이 필요합니다. 백업 할 필요 가 없는 것을 파악하여 시작하십시오 . 먼저 루트 디렉토리를 살펴본 후 뒤로 작업하십시오.
예를 들어, 다음을 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
GET 자동 재부팅에 다시 만들었습니다. [: 나는이 링크 추측하고있어 /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 시스템을 백업하는 방법입니다. 그들이 제공하는 것 중 하나는 파티션 맵과 비 리눅스 파티션의 이미지입니다. 이제 파티션을 재구성하기 전과 백업 복원 기능을 테스트하기 전에이 작업을 수행합니다.
(나는 이것을 어떻게 더 좋게 만들 수 있는지에 대한 제안에 매우 개방적입니다.)
데스크탑 시스템을 다시 설치하면 백업됩니다.
/etc
/var
하위 폴더를 제외하기에는 너무 게으르다/opt
/home
별도의 파티션에 있으며 매일 백업 됩니다 .
다시 설치 한 후 백업에서 부품을 복원하는데 실제로 필요합니다.
이 전략을 사용하면 모든 구성, 로컬 메일 및 crontab 구성이 안전하며 필요한 응용 프로그램 만 다시 설치해야합니다.
내 개인 스크립트는 내 홈 폴더 (매일 백업, 기억?)에 저장되므로 사용하지 않습니다 /usr/local
.
/opt
우리에게 필요한 것은 무엇입니까 ? 즉 : 왜 그것을 백업?
대부분의 사람들은 홈 디렉토리를 백업합니다 /home/$USER/
. 구성 파일 및 설정을 백업하려면 홈 디렉토리의 폴더 및 파일에로 시작합니다. (점). 사용하는 패키지 (및 PPA) 목록을 작성하면 필요한 경우 모든 패키지를 쉽게 다시 설치할 수 있습니다. 또는 이 설명에 설명 된 명령을 사용하십시오 .
Deja Dup Backup은 우분투에서 기본으로 제공되는 훌륭한 도구입니다. 다른 옵션으로는 명령 줄 (rsync, rsnapshot, rdiff-backup 등)이 있습니다.
마지막으로 전체 디스크를 이미지로 백업하려면 clonezilla를 확인하십시오 .
/var/spool/cron
도 수행하십시오.
여기에서 파일 목록을 수집합시다. 이 게시물을 "커뮤니티 위키"로 만들었습니다.
물론 사람마다 다릅니다. 광산은 주로 웹 서버 및 NFS 서버로 사용됩니다.
mkdir $MY_BACKUP_FOLDER
cd $MY_BACKUP_FOLDER
sudo rsync -a --relative /var/spool/cron/crontabs .
sudo rsync -a --relative /etc/exports .
sudo rsync -a --relative /etc/sudoers .
sudo rsync -a --relative /etc/apache2/apache2.conf .
sudo rsync -a --relative /etc/auto* .
sudo rsync -a --relative /etc/fstab .
sudo rsync -a --relative /etc/hosts .
sudo rsync -a --relative /etc/samba/smb.conf .
sudo rsync -a --relative /etc/udev .
sudo rsync -a --relative /etc/updatedb.conf .
sudo rsync -a --relative /usr/share/applications .
나는 지적 재산으로 느슨하게 정의 될 수있는 중요한 것을 백업하고 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