Linux-서버를 백업 할 때 어떤 디렉토리를 제외해야합니까?


37

Linux 서버를 백업하고 다른 서버에 저장하고 있습니다.

나는 간단한 것으로 시작

rsync -aPh --del server.example.com:/ /mnt/backup

그런 다음 한 서버의 서버를 다른 서버에서 /proc복원하고 싶지 않기 때문에 누군가 백업하지 않아야한다고 지적했습니다 /proc.

포함시키지 말아야 할 것이 있습니까?

예를 들어, 어떻 /sys습니까?

답변:


24

이것은 실제로 시스템 복원 방법에 달려 있습니다. 다시 빌드하는 경우 서비스에 대한 구성 / 데이터 파일 만 필요합니다 (예 : / etc, / opt, / var, / home)

전체 시스템 복원 후 / proc, / boot & / dev를 생략 할 수 있습니다. 그런 다음 부트 미디어에서 최소 OS를 설치 한 다음 백업을 통해 시스템을 복원 할 수 있습니다.

물론 최상의 백업은 테스트검증 된 백업입니다 .

따라서 필요하지 않은 것을 생략하고 VM에서 복원하고이 데이터를 사용하여 시스템을 복구 할 수 있는지 확인하십시오.


5
/boot완전히 생략하지 마십시오 -이전 부팅 구성과 새 부팅 구성을 비교해야 할 수도 있습니다. 수동을 제외하고 는 복원 하지 마십시오 /boot.
quck quixote

5
그리고 / sys도 제외하고 ... 베어 메탈로 복원하려면 /etc/udev/rules.d/도 제외하는 것이 좋습니다.
wazoox

2
또한 파일 시스템, / mnt 및 / media에서 마운트 된 장치를 복사하지 않는 파일을 잃어 버렸습니다.
blade

29

모두 /proc/sys시스템의 상태를 반영하고, 여러 런타임 매개 변수를 변경 (때로는 직접 메모리 또는 장치에 쓰기처럼, 더 위험한 일을) 할 수 있도록 가상 파일 시스템입니다. 절대 백업하거나 복원해서는 안됩니다.

대부분의 최신 배포판에서는 /dev부팅시 동적으로 생성됩니다 (이는 메모리 파일 시스템 udev과 친구로 채워짐 ). 백업 할 필요가 없으며 복원을 시도하는 것은 무의미합니다. 배포가 정적을 사용하도록 구성되어있는 경우에는 /dev,이 (검사가 적용되지 않습니다 /proc/mounts, 경우 /devA는 tmpfs이 메모리 파일 시스템)입니다.

백업하지 말아야 할 다른 파일 시스템이 있습니다. usbfs(보통에 /proc/bus/usb모두에 장착 된 경우), debugfs(에 있어야 /sys/kernel/debug모두에 설치하는 경우, 그러나 어떤 사람들은 다른 곳에 넣어, 당신은 아마이없는), devpts(에 장착 된 /dev/pts다른) tmpfs인스턴스 (종종에서 발견 /dev/shm, /var/run, /var/lock, 기타 장소, 백업 및 복원은 시스템 종료시 내용이 손실되므로 무해하지만 무의미해야합니다. 원격 파일 시스템 또는 매직 자동 마운터 디렉토리 (백업 또는 복원을 시도하면 재해가 발생할 수 있음) 다른 머신으로 백업 / 복원합니다 . 또한주의해야 /media하고/mnt, 드라이브에 잊어 버린 CD와 같은 외부 장치를 찾을 수 있지만 백업해야 할 대상을 마운트하기 위해 의도적으로 사용했을 수도 있습니다.

대부분 무해 이외의 것을 참고 tmpfs, 인스턴스, 네트워크 파일 시스템 /의 automounter 및 이동식 미디어는 백업의 모든 후손입니다 안되는 파일 시스템 /dev, /proc또는를 /sys. 당신이 어떤 네트워크 파일 시스템 (또는의 automounter)없이 이동식 미디어는 제외없는 경우 /sys/proc및 재부팅 A는 (와이프 복원 후 tmpfs인스턴스를) 충분합니다.



8

/ proc 및 / sys의 일부 특수 파일은 rsync와 혼동됩니다. 일반적으로 마운트 된 네트워크 파일 시스템도 백업하고 싶지 않습니다. 스파 스 파일도 문제를 일으킬 수 있습니다.

하나의 파일 시스템으로 제한하려면 -x를 추가하십시오. 모든 네트워크 파일 시스템 및 / proc 등을 피할 수 있습니다. 그러나 마운트 한 각 파일 시스템에 대해 하나의 rsync를 실행해야합니다.

희소 파일을 현명하게 처리하려면 -S를 추가하십시오.


4

/ boot, / dev 및 / proc는 백업하는 데 쓸모가 없습니다.하지만 수행중인 작업을 알고 있으면 / boot를 백업 할 수 있습니다.

또한 / lib, / media, / mnt, / sbin, / bin, / srv, / sys 또는 / tmp를 백업하지 않습니다.

/ usr에 백업 할 가치가있는 항목이 있는지 여부에 따라 / usr은 선택 사항입니다. 내가 당신이라면 나는 사용자의 $ HOMEs, / var, / etc (구성 파일을 위해)를 백업하는 것에 대해 가장 걱정할 것이다.

다시 말하지만 이것은 실제로 백업하려는 유형 에 따라 다릅니다 . 이것은 웹 서버입니까? 이것은 개인용 컴퓨터입니까? / home 아래에 많은 디렉토리가있는 쉘 서버입니까?


새 머신에 백업을 복제하여 복원하고 싶습니다
Rory

"복제"란 무슨 뜻입니까? dd 및 sfdisk를 사용하여 원시 파티션을 백업 할 수 있습니다. sfdisk -d> partition_table.part dd if = / dev / sda1 of = dev.sda1.img (각 파티션에 대해 수행), 새 시스템에서 : sfdisk / dev / sda <partition_table.part dd if = dev.sda1.img of = / dev / sda1 (각 파티션마다)
Michael Pobega

댓글 시스템은 코드 태그를 좋아하지 않기 때문에 다른 답변을 게시했습니다.
Michael Pobega

@MichaelPobega 당신이 말하는대로 원시 파티션을 백업하는 경우 전체 디스크 크기를 복사해야합니다. 디스크의 80BG 만 사용했을 때 왜 512GB를 복사합니까? 사용 rsync하면 사용한 것만 복사 할뿐만 아니라 향후 동기화도 가능하게하므로 크론 작업을 안전하게 실행할 수 있습니다.
최대

몇 년 후, 10 년 동안의 경험을 통해 귀하는 @Max라고 생각합니다.
마이클 포베가

3

sfdisk 및 dd를 사용하여 전체 백업을 수행 할 수 있습니다.


각 하드 드라이브의 파티션 구성표를 백업하려면 다음과 같이 sfdisk를 사용하십시오.

sfdisk -d /dev/sda  > parttable_sda.part

각 파티션을 백업하려면 다음과 같이 dd를 사용할 수 있습니다.

dd if=/dev/sda1 of=devsda1.img

어디는 /dev/sda1이러한 라이브 CD 부팅과 마찬가지로 마운트 해제됩니다.

(이 파일을 쓰려면 충분한 여유 공간이 필요하다는 점을 명심하십시오. 따라서 외부 미디어에 파일을 쓰려고 할 수도 있습니다) 각 파티션에 대해 한 번에 하나씩 수행하고 모든 것을 백업하십시오.


그런 다음 다른 컴퓨터에서 복원하려면 다음을 수행하십시오.

sfdisk /dev/sda < parttable_sda.part
dd if=devsda1.img of=/dev/sda1    # do this for each partition

3
경고 : 파티션이 마운트 해제되었거나 읽기 전용으로 마운트 된 경우에만이 작업을 수행하십시오. 파티션을 작성하는 동안 파티션의 원시 내용을 덤프하면 백업에서 파일 시스템의 일관성이 불일치 할 수 있습니다 (파일 시스템의 시작 부분 근처에있는 블록은 끝 부분에있는 블록보다 "이전"으로 복사되고 파일 시스템 알고리즘은 그렇지 않기 때문에) 파일 시스템의 원자 스냅 샷을 수행 할 수 있으면이 문제를 피할 수 있습니다. fsck는 알고리즘이 파일 시스템이 디스크에 쓰는 순서에 따라 달라 지므로 도움이되지 않습니다.
CesarB

dd는가는 길입니다. 물론 LiveCD로 부팅하십시오. 그리고 dd if=/dev/urandom of=/dev/sdb bs=512 count=12대상 드라이브의 MBR 및 파티션 테이블을 지우는 것이 중요합니다 .
SDsolar

2

제외하지 않고 보통 내가 원하는 것을 백업합니다. 포함 : /home /etc /var(제외 /var/log)


1

기본적으로 의사 파일 시스템 (/ proc, / sys, / dev / shm ...)은 백업 할 필요가 없습니다.


1

이 위대한 공동체가 지적한 바와 같이 :

/ dev / proc / sys / tmp / run / media / lost + found / boot (/ boot는 선택 사항입니다. 다른 주석 참조)

내 최종 rsync 명령 ( '/ run / media / fred / INTENSO /'에 외부 미디어가 마운트되어 'fred'라는 폴더에 백업 된 아치 아래)은 다음과 같습니다.

$ sudo rsync -Pazhmxv --exclude / run / media --exclude / dev --exclude / lost + found --exclude / tmp --exclude / proc --exclude / boot --exclude / sys / / run / media / 프레드 / 인 텐소 / 프레드 /.

(제외 된 파일은 Bash 아래에 중괄호 (--exclude = {/ dev, / proc}) 또는 텍스트 파일 (--exclude-from = 'excude.txt')로 지정할 수도 있습니다).

-P : 진행률 표시 -a : 아카이브 모드 -z : 전송 중 압축 -h : 사람이 읽을 수있는 형식으로 출력 번호 -m : 비어있는 디렉토리 정리 -x : 하나의 파일 시스템으로 제한 -v : 상세


1

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

0

나는 일반적으로 시스템의 모든 것을 백업하는 습관 을냅니다. 심지어 내가 아는 것조차도 백업에 쓸모가 없습니다. 설정이 더 간단하고 백업에 포함해야하는 모든 것을 얻을 수 있다는 것을 100 % 확신 할 수 있습니다.


1
예, 그러나 후속 질문은 불필요한 백업에서 무엇을 삭제합니까?
Rory

나는 "아무것도"라고 대답합니다.
Maximus Minimus

참된. 백업 자체가 아닌 복원 프로세스에서 제외합니다. 그러나 당신은 아마 아직도 떠나고 싶어 /proc하고 /dev그래서 가난한 조금 혼동하지 rsync.
TJ Crowder

1
@mh, 원래 서버의 메모리 인 / proc / kcore를 복원 하시겠습니까? 조금 바보 같은 소리 ...
Rory

0

웹 사이트 개발 및 문서 위키 호스팅을위한 테스트 서버로 Ubuntu Linux 상자를 사용하고 있습니다. 매일 밤 crontab은 MySQL 데이터베이스를 / var / www에 덤프 한 다음 모든 / var / www가 압축되어 백업 서버에 복제됩니다. 이상적이지는 않지만 충분합니다. 한 시점에서 서버를 다시 빌드해야했고 아파치와 삼바 구성 파일 만 놓쳤습니다.


0

가상 머신에 Linux가 없다고 가정합니다. 가능하다면 가상화로의 전환을 고려할 것을 촉구합니다. vm 수준의 백업은 완전히 새로운 수준의 일관성과 사용 편의성입니다. 무료 가상화 도구가 있으므로 VmWare 또는 기타 고가의 몬스터 도구에 투자 할 필요가 없습니다.


0

질문 : 서버를 백업 할 때 어떤 디렉토리를 제외해야합니까?

다음은 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각 우분투 시스템 백업 드라이브가 크론 기반 마운트 풀 타임 가지고있는 곳입니다 - rsync자동 백업 하루에 4 번을. 이 드라이브는 항목에 의해 마운트되며 fstab항상 존재합니다. 다른 시스템에 백업에 포함시키는 것은 중복됩니다.

마찬가지로 /mediaUSB 드라이브가 마운트되는 곳입니다. 별도로 백업됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.