다음 rsync
은 Pi 백업에 사용하는 소개 입니다. 초기 백업이 생성되면이 방법으로 최신 상태를 유지하는 것이 전체 이미지를 지속적으로 리핑하는 것보다 훨씬 빠릅니다. 로컬 하드 드라이브 나 네트워크를 통해이 작업을 수행 할 수 있습니다.
실제로 파일 시스템에있는 일부 항목은 런타임에만 존재하기 때문에 실행중인 시스템의 전체 사본을 백업으로 원하지 않습니다. 백업에서 것을 포함하고 나중에 이미지를 재현하는 데 사용 할 수 있습니다 당신을 위해 문제를 만들 수 있습니다.
다른 예외도 있습니다. 제외 할 rsync
( glob ) 패턴 목록을 승인 할 수 있으며 파일에서 읽을 수 있으므로 먼저 해당 파일에 포함 된 내용을 살펴 보겠습니다. 항목은 형식이 /directory/*
아니며 형식이 아닙니다 /directory
. 왜냐하면 우리는 그것들이 존재하기를 원하기 때문입니다. 그러나 우리는 그 안에 아무것도 복사하고 싶지 않습니다.
/proc/*
/sys/*
이들은 실제로 디스크에 존재하지 않습니다. 그것들은 커널에 대한 인터페이스이며, 메모리에서 커널을 생성하고 유지합니다 . 이것을 복사 한 다음 다시 시스템에 복사하여 부팅하면, 커널은 인터페이스의 마운트 지점으로 커널을 사용하기 때문에 (최상의) 의미가 없습니다. 데이터가 들어있는 디렉토리에서 시도하십시오. 그것은 작동하고 아무런 해를 끼치 지 않지만 디렉토리에있는 것들에 액세스 할 수 없습니다.]
/sys
및 /proc
마운트 지점이 존재 하는 것이 중요 합니다. 그러나 그들은 아무것도 포함해서는 안됩니다. 다음:
/dev/*
dev
디렉토리는 확실히 같은 것이 아니다 proc
하고 sys
있지만 우리의 목적을 위해. 당신이 당신의 백업 또는 무언가에 동일한 장치 노드를 가질 수 있도록 이것을 저장해야한다고 생각한다면, 잘못되었습니다 . 귀찮게하지 마십시오. 복사하지 마십시오 dev
. 옛날 옛적에 리눅스는 그런 식으로 작동했지만 더 이상 작동하지 않습니다.
/boot/*
이것은 Raspbian과 같은 Pi 관련 배포판을 가장 많이 사용하는 특별한 경우입니다. 실제로 첫 번째 vfat 파티션의 마운트 지점입니다. 우리는 그것을 별도로 처리 할 것입니다. 무엇을하든 여기에 포함시키지 않아도됩니다. 다시 말하지만 마운트 지점이기 때문입니다.
/tmp/*
/run/*
/run
일반적으로 디스크에도없고 메모리에도 있습니다. 아마도 /tmp
너무 될 수 있습니다 (이것은 약간의 SD 카드 작업을 저장합니다). 어쨌든 이름에서 알 수 있듯이 영구 데이터를 저장하기위한 장소는 아닙니다. 이를 사용하는 응용 프로그램은 부팅 할 때마다 삭제 될 수 있습니다.
/mnt/*
/media/*
파일 시스템에서 해당 장치의 위치를 제외하지 않으면 하드 드라이브 또는 USB 스틱에 백업하려는 경우 장치가 장치에 /mnt
있거나 /media
자동 마운트가 후자를 사용하는 경우 특히 중요 합니다. 공간이 부족해질 때까지 드라이브의 내용을 자체적으로 백업하는 루프를 만듭니다. 내가 생각하는 rsync
수도 벙어리 무언가를 발견하지만, 전제 테스트를 피하려고 똑똑합니다.
실제 백업으로 : 로컬로 마운트 된 하드 드라이브, USB 등에 백업 할 디렉토리를 만듭니다 (예 : "pi_backup"). ssh
네트워크 마운트 파일 시스템을 사용하거나 (아래 참조) 원격 위치에 교대로 백업 할 수 있지만 처음 시간이 걸릴 수 있습니다.
제외 할 목록이 포함 된 파일이 /rsync-exclude.txt
1 이고 드라이브가 /mnt/usbhd
인 경우 실제 백업을 수행하려면 다음을 수행하십시오.
rsync -aHv --delete --exclude-from=/rsync-exclude.txt / /mnt/usbhd/pi_backup/
에 슬래시가pi_backup/
있습니다.
이것은 시간이 걸리고 많은 출력을 생성합니다 (대신 로그에서 검사하려면을 추가하십시오 > rsync.log
). --delete
처음에는 의미가 없지만 백업을 업데이트 된 상태로 유지하려면 사용하십시오. 그러면 나중에 Pi에서 삭제 한 항목도 백업에서 제거됩니다. a
및 디렉토리에 세트 재귀 모든 파일이 일치하는 속성을 확인합니다. 하드 링크-H
를 유지하는 것입니다 2 , 장황한 것이므로 일부 출력을 얻습니다 (그렇지 않으면 조용합니다). 자세한 내용 을 참조하십시오 .v
rsync
man rsync
--exclude-from
파일을 건너 뛸 수있는 바로 가기가 있습니다 . 복사하고 싶지 않은 모든 것들이 /tmp
별도의 파일 시스템에 있다고 확신하면 다음을 사용할 수 있습니다.
rsync -axHv --delete-during / /mnt/usbhd/pi_backup/
-x
삽입되었습니다. 이것은 짧은 형식으로 파일 시스템 경계를 넘지 않도록 --one-file-system
지시 rsync
합니다. 개인적으로 나는을 선호 --exclude-from
하지만 기본 Raspbian과 같이 --one-file-system
잘 작동합니다. -x
tra 조심 하고 싶다면 둘 다 사용할 수 있습니다 . : D
그것은 완전한 백업이 아닙니다. 아무 것도 넣지 않은 상태 boot
에서 백업을 사용하여 컴퓨터에 카드를 넣고 실행하여 시스템을 복원하는 것으로 충분하다면 충분합니다 .
rsync -av --delete-during /mnt/usbhd/pi_backup/ /mnt/sdcard_partition2/
새 이미지가있는 카드를 사용하여이 작업을 수행 할 수도 있습니다 (기본 이미지와 동일하다고 가정). 이미지를 만들어야하는 경우 (대부분의 이미지를 덮어 쓰기 때문에) 비효율적입니다. 이러한 이미지가있는 USB 어댑터를 통해 다른 SD 카드를 연결하고 위의 방법을 사용하여 중복 카드를 유지할 수도 있습니다.
을 포함하여 /boot
(예를 들어, 커스텀 커널) 에 물건을 넣었다면 , /boot/config.txt
너무 백업하지 않아도됩니다 (꽤 간단합니다. 별도로 수행하면 복원 할 때 해당 항목이 첫 번째 파티션으로 이동합니다.
빈 Raspbian 스타일 이미지 를 생성 한 다음 백업 할 수 있는 경우 여기를 참조하십시오 . 다만 오히려 다루는 것보다 - 당신은 빈 Raspbian 스타일의 카드를 만들 비슷한 방법을 사용할 수 있습니다 .img
당신은 실제 장치 (예를 처리 할 것, 파일 /dev/sdb
당신이해야 할 모든이와 파티션 테이블을 만드는 것입니다,)을 의미 fdisk
하고 형식 /dev/sdb1
및 sdb2
(또는 무엇이든) mkfs
.
그러나 전체 이미지를 복사하는 것이 더 쉽습니다! 왜 이것을 귀찮게합니까?
그렇게 어렵지 않습니다. 10 분 안에 빈 카드 (마지막 링크에 따라 포맷 된)로 복구했습니다. 그렇습니다. 단순히 사용 dd
하는 것이 더 간단합니다 (혼동하는 단어와 같은 것을 발견하면 ...)하지만 100 %마다 수행해야하기 때문에 백업을 업데이트 할 때마다 꽤 오래 걸립니다. 을 사용 rsync
하면 백업이 존재하면 업데이트 속도가 훨씬 빨라지므로 매일 cron을 통해 고통없이 발생하도록 설정할 수 있습니다. 네트워크를 통해서도. 6 시간마다. 자주할수록 시간이 덜 걸립니다.
rsync
통하다 ssh
예를 들면 다음과 같습니다.
rsync [options] --rsh="ssh [ssh options]" root@[the pi ip]:/ /backup/rpi/
"옵션"은 예를 들어 -av --delete --exclude-from=/rsync-exclude.txt
"ssh 옵션"은 일반적으로 사용하는 모든 것입니다 (있는 경우). 을 통해 당신은 루트 액세스 권한이 있어야합니다 ssh
시스템 백업의 목적 (설정이 작업을 수행 할 수 PermitRootLogin=yes
있는 /etc/ssh/sshd_config
서버를 다시 시작).
1 이 파일을 보관해야합니다. #
또는로 시작하는 줄에 주석을 넣을 수 있습니다 ;
. 여기에는 실제 rsync
명령 이 포함될 수 있으며 나중에 복사하여 붙여 넣을 수 있으므로 매번 기억할 필요는 없습니다.
2 지적한 크리스 덕분 rsync
에이 작업은 자동으로 수행되지 않습니다.
dd
조사,rsync
.