저는 몇 주 동안 Raspberry Pi (Raspbian 실행) 용 프로그램을 작성해 왔으며 내가 한 작업을 보호하고 싶습니다.
내가 만든 파일을 어떻게 백업 할 수 있습니까?
SD 카드를 Windows (XP 또는 7) PC에 꽂고 하드 드라이브 나 다른 SD 카드에 복사 할 수 있습니까?
git
하거나 hg
, 여러 장소에서 코드의 사본이 아니라 그런 식으로뿐만 아니라 그 코드가 어떻게 변경되었는지의 전체 역사를 가지고 있습니다.
저는 몇 주 동안 Raspberry Pi (Raspbian 실행) 용 프로그램을 작성해 왔으며 내가 한 작업을 보호하고 싶습니다.
내가 만든 파일을 어떻게 백업 할 수 있습니까?
SD 카드를 Windows (XP 또는 7) PC에 꽂고 하드 드라이브 나 다른 SD 카드에 복사 할 수 있습니까?
git
하거나 hg
, 여러 장소에서 코드의 사본이 아니라 그런 식으로뿐만 아니라 그 코드가 어떻게 변경되었는지의 전체 역사를 가지고 있습니다.
답변:
모든 데이터를 보존하려면 디스크 이미지를 작성해야합니다. 또한 Windows는 일반적인 Linux 파일 시스템을 인식 할 수 없으므로 SD 카드를 꽂으면 파일을 볼 수 없습니다.
디스크 이미지를 만들면 파일뿐만 아니라 파일 시스템 구조도 보존되며 새 SD 카드를 플래시하기로 결정하면 플러그를 꽂으면 작동합니다.
Linux에서는 표준 dd
도구를 사용할 수 있습니다 .
dd if=/dev/sdx of=/path/to/image bs=1M
/dev/sdx
SD 카드는 어디에 있습니까 ?
Mac에서는 dd
약간 다른 구문으로 표준 도구를 사용할 수도 있습니다 .
dd if=/dev/rdiskx of=/path/to/image bs=1m
/dev/rdiskx
SD 카드는 어디에 있습니까 ?
(원시 장치로 rdisk를 사용하는 것이 바람직합니다.)
diskutil list
명령 프롬프트에서 장치가 어떤 디스크를 입력하는지 확인하려면 루트 여야합니다. 이 유형을 수행 sudo -s
하고 프롬프트가 표시되면 비밀번호를 입력하십시오.
옵션 1
Windows에서는 SD 카드를 플래시 할 때 사용한 역 프로세스를 사용할 수 있습니다.
Foundation의 SD 카드를 플래싱하기 위해 선호되는 도구 인 Win32 Disk Imager를 사용할 수 있습니다 . 파일 이름 (저장할 백업 이미지 파일의 위치 및 이름)을 입력하고 장치 (SD 카드)를 선택한 다음 읽기를 누릅니다.
물론, 당신은 또한 사용할 수 있습니다 RawWrite을 , dd
Windows 용 또는 이와 유사한 도구, 프로세스가 매우 유사하다.
옵션 2
전체 시스템을 백업하지 않고 특정 파일 만 백업하려는 경우 SFTP를 통해 Raspberry Pi에 연결하고 파일을 로컬 컴퓨터에 복사하는 것이 좋습니다 ( WinScp 클라이언트를 사용할 수 있음 ). SSH가 활성화 된 경우 SFTP는 일반적으로 Raspberry Pi 측에서 특별한 구성이 필요하지 않습니다.
또 다른 옵션은 rsync를 사용하여 파일을 원격 시스템 에 복사하는 것 입니다.
또한 Windows가 ext
파일 시스템을 읽을 수 있도록 (따라서 전체 SD 카드를 읽을 수 있도록) 특수 드라이버를 설치할 수도 ext2fsd
있지만 노력할 가치는 없습니다.
이미지는 SD 카드와 동일한 크기이므로 압축하고 싶을 수 있습니다. 이는 gzip
7zip, WinZip, WinRar 와 같은 즐겨 사용하는 압축 도구를 사용하여 간단히 수행 할 수 있습니다 .
Linux를 실행중인 경우 dd
명령을 사용 하여 이미지의 전체 백업을 작성할 수 있습니다 .
dd if=/dev/sdx of=/path/to/image
또는 압축의 경우 :
dd if=/dev/sdx | gzip > /path/to/image.gz
sdx
SD 카드는 어디에 있습니까 ?
백업을 복원하려면 다음 명령을 취소하십시오.
dd if=/path/to/image of=/dev/sdx
또는 압축 된 경우 :
gzip -dc /path/to/image.gz | dd of=/dev/sdx
:)
)
bs=1M
비슷한 매개 변수 를 그대로 두는 실수를하지 마십시오 . 512 바이트의 기본 블록 크기는 것입니다 죽일 복사 성능을.
이러한 블록 레벨 백업 외에도 소스를 처리하는 일반적인 두 가지 접근 방식이 있습니다. 즉, 지속적으로 아카이브하거나 (1) 개정 제어 시스템을 사용하는 것입니다 (2).
우리는 커맨드 라인 ( Raspberry Pi 머신에 대한 로컬 터미널 또는 SSH 연결)을 사용할 것입니까?
1. 보관
cd ~/projects
tar czvf your-raspberry-project-top-level-dir-v1.0.tgz \
./your-raspberry-project-top-level-dir
scp your-raspberry-project-top-level-dir-v1.0.tgz \
user@backup-host:/home/user/backups/
2. RCS (예 : Git)
cd ~/projects/your-raspberry-project-top-level-dir
make clean # Or clean it manually using rm (rm ./*.o ./*.pyc)
git init # Create new repo here
git add . # Add source files to the staging index
git status # Verify if it's OK
git commit -a -m "Initial import" # Fix application's source changes
git add remote https://github.com/user/your-raspberry-project.git
git push -u origin master # Sends the sources to your github repo
git pull && git push && git status # Now origin/master is your tracking branch
Mac에서는 을 사용하고 싶지 않습니다 /dev/diskn
. 당신은 사용해야 /dev/rdiskn
n은 OS가 SD 카드를 식별하는 데 사용하는 번호입니다 대신. 이렇게하면 복사 시간이 크게 줄어 듭니다.
따라서 Mac에서 최적의 백업 프로세스를 위해 다음을 수행하는 것이 좋습니다.
를 실행 diskutil list
하고 Raspberry Pi의 SD 카드에 해당하는 디스크를 찾으십시오.
$ diskutil list
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.1 GB disk0
1: EFI 209.7 MB disk0s1
2: Apple_HFS Macintosh HD 499.2 GB disk0s2
3: Apple_Boot Recovery HD 650.0 MB disk0s3
/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *7.9 GB disk1
1: Windows_FAT_32 58.7 MB disk1s1
2: Linux 7.9 GB disk1s2
분명히 /dev/disk1
내 8GB SD 카드입니다. 리눅스 파티션 이름도 약간의 힌트입니다.
그러나 /dev/disk1
with 를 사용 하는 대신 다음과 같이 dd
사용해야합니다 /dev/rdisk1
.
sudo dd if=/dev/rdisk1 of=/path/to/backup.img bs=1m
그리고 복원하려면 if
(입력 파일) 및 of
(출력 파일) 매개 변수를 바꾸십시오 .
sudo dd if=/path/to/backup.img of=/dev/rdisk1 bs=1m
또는 gzip
을 사용하면 상당한 공간을 절약 할 수 있습니다.
sudo dd if=/dev/rdisk1 bs=1m | gzip > /path/to/backup.gz
그리고 이미지를 다시 SD로 복사하려면 :
gzip -dc /path/to/backup.gz | sudo dd of=/dev/rdisk1 bs=1m
자세한 정보는 이 위키 페이지를 참조하십시오.
공간이 많은 Linux PC에서이 명령을 실행할 수 있습니다.
ssh root@raspberrypi gzip -c /dev/mmcblk0 > img.gz
전제 조건으로 .ssh 키를 생성하고을 (를) 복사해야 id_XXX.pub
합니다 /root/.ssh/authorized_keys
.
라이브 백업이므로 파일 시스템에 문제가있을 수 있지만 Raspberry Pi가 실제로 사용 중이 아닌 경우 일반적으로 문제가 없습니다.
다음과 같이 PC에서 압축하는 것이 더 빠를 것입니다.
ssh root@raspberrypi dd if=/dev/mmcblk0 | gzip -c > img.gz
ssh root@raspberry dd if=/dev/mmcblk0 bs=1M | pv | gzip -c > img.gz
Windows를 사용하는 경우 :
Win32 디스크 이미 저를 다운로드하십시오.
이미지를 저장하는 데 사용할 파일 경로를 만듭니다. (C : \ RasPi_Bkp를 사용합니다)
Win32 디스크 이미 저 실행
백업 파일 경로를 찾아 파일 이름을 입력하십시오.
저장을 클릭하십시오
파일 경로 오른쪽의 드롭 다운에 표시된 장치가 백업하려는 장치인지 확인하십시오.
"읽기"를 클릭하십시오
기다림.
프로그램이 모두 pi 사용자 ID에 있으면 제안 된대로 전체 파일 시스템을 백업 할 이유가 없습니다. 내가하는 일은 단일 ID를 백업하는 것입니다. 나는 명령을 실행 :
tar -czf pi.tgz *
pi의 홈 디렉토리에서 파일 pi.tgz를 작성하고 여기에 포함 된 모든 파일과 디렉토리 (숨겨진 파일 제외)가 들어 있습니다. 그런 다음이 파일을 다른 Linux 컴퓨터로 scp하지만 다른 컴퓨터로 가져 오는 모든 것을 안전하게 보관하기 위해 ftp로 보내거나 전자 메일로 보낼 수 있습니다.
이것은 백업을 위해 훨씬 작은 파일을 만듭니다.
도중에 설치 한 모든 추가 패키지에 대해 걱정하십니까? SD 카드를 다시 작성해야하는 경우 해당 설치를 다시 수행 할 스크립트를 작성하여 pi의 홈 디렉토리에 보관하십시오. (저는 ~ / bin 디렉토리가 있습니다). 설치를 위해 필요한 모든 명령을 사용하여 원하는 위치로 되돌릴 수 있습니다. 변경 사항을 문서화하고 새 SD 카드를 신속하게 구축 할 수 있습니다. 다음 형식의 명령이 포함됩니다.
apt-get --assume-yes install apache2 mysqld mysql php5 php-pear
그것으로 시작
apt-get update
apt-get --assume-yes upgrade
패키지를 추가하기 전에 시스템도 현재 레벨로 올라갑니다.
이 파일은 pi.tgz 파일에 있으므로 필요할 때 사용할 수 있습니다.
Raspbian을 실행하고 dd와 cron을 사용하여 SD 카드를 외부 USB 드라이브에 자동 백업합니다.
정말 간단한 해결책입니다. 월요일 아침 오전 2시에 일주일에 한 번 실행되며 SD 카드의 이미지를 만듭니다.
백업 중에 SD 카드가 기록되는 위험을 최소화하기 위해 lighttpd 및 cron과 같은 서비스를 종료하는 스크립트를 작성하고 백업이 완료되면 다시 서비스를 시작하기 전에 dd를 호출합니다.
스크립트와 지침을 블로그 ( http://www.stuffaboutcode.com/2012/08/raspberry-pi-auto-backups.html) 에 넣었습니다 .
dd
보내고 sd?
장착 파티션을 장치하는 것은 매우 안전 소리가 나지 않는다.
데비안에서는 dd와 tar를 사용할 수 있습니다. 이렇게하면 SD 카드의 전체 사본이 만들어지고 USB 또는 네트워크 드라이브에 마운트 된 외부 (SD 카드에) 저장 공간이 필요합니다.
dd if=/dev/sdd of=yourbackupfilenamehere.dd
tar zcvf yourbackupfilenamehere.dd.tar.gz
/ dev / sdd는 SD 카드의 위치이며 of
출력 파일 이름입니다.
.tar.gz
dd 파일의 파일 을 만드 나요? dd 파일을 직접 실행 gzip
하거나 bzip2
직접 실행하는 것이 낫지 않습니까?
/dev/mmcblk0p1
그리고 /dev/mmcblk0p2
나열 ...
다행히 Raspberry Pi는 Raspberry (Windows, Linux, Mac)에 액세스하는 데 사용되는 기본 OS와 독립적 인 자체 백업을 만들 수 있습니다. dd, tar 및 rsync는 Linux에서 백업을 작성하는 다른 도구입니다. 백업을 만들기 전에 mysql, smb, dlna, owncloud, seafile, apache 등과 같은 모든 바쁜 작업을 중지하는 경우 Pi를 실행하여 이러한 모든 유형의 백업을 만들 수 있습니다. 접근 방식 에 대해 자세히 설명 하는 다른 질문이 있으며 가능한 해결책 이 여기에 설명되어 있습니다.
스트레치 라는 Raspbian의 새 버전에는 SD Card Copier라는 초보자 용 앱이 있습니다. dd 등의 Linux 도구를 사용할 필요가 없습니다. 큰 카드를 작은 카드로 복사 할 수도 있습니다.
왼쪽 상단 모서리에있는 GUI RPi 앱 메뉴 아이콘으로 시작하여 액세서리로 이동 한 다음 SD 카드 복사기를 클릭하십시오.
GUI 내부에서 몇 번의 클릭 만하면됩니다!
백업 SD 카드를 만든 후에는 Windows 디스크 관리자를 사용하여 카드 이미지를 Windows 파일로 읽고 Windows 디렉토리에 저장할 수 있습니다. 이 방법으로 실제 SD 카드 만 있으면 Windows PC에 여러 버전의 이미지를 저장할 수 있습니다.
물론 백업 카드를 작업 복사본으로 사용하여 마스터 카드가 된 원본 카드를 교체하고 안전한 장소에 고정 할 수 있습니다.
내 맞춤 SD 카드의 이미지를 만들려고 검색하는 동안이 게시물을 찾았습니다. 여기에 가장 좋은 대답은 SD 카드 이미징에 대해 설명하지만 가능한 작은 이미지를 만들기 위해 파일 시스템을 축소해야했습니다. 이 작업을 수행하고 https://raspberrypi.stackexchange.com/a/37899/32585 에서 프로세스를 간략하게 설명하는 자체 도구를 만들었습니다.
3 가지 옵션이 있습니다 :
이 안드로이드 앱은 SD 카드를 .img 파일로 읽고 동시에 압축합니다 : https://play.google.com/store/apps/details?id=com.redrobe.raspicardimager
Linux 인 경우 raspberry pi를 백업하는 유틸리티를 만들었습니다. 이렇게하면 라즈베리 파이의 이미지가 축소되므로 작은 SD 카드에 .iso를 넣을 수 있습니다 : RaspberryPiShrink
프로세스를 안내하는 python 스크립트가 실행됩니다. microSD 카드를 Ubuntu, Linux Mint 또는 Debain 컴퓨터에 꽂고 터미널 지침을 따르십시오.
Windows 용 usbit을 사용하고 있습니다. 더 큰 SD 카드에서 더 작은 SD 카드로 교체 할 수있는 유일한 도구입니다. 옵션 페이지에서 다음을 선택했습니다. 크기 검사를 무시 하고 너무 큰 이미지 자르기 .
이를 통해 OpenELEC 및 Xbian 이미지를 16GB 클래스 4 SD 카드에서 8GB 클래스 10 카드 로 교체 할 수있었습니다 .
파티션 테이블의 크기를 조정하는 것보다 훨씬 쉽습니다.
find -type f -exec md5sum {} \; > filelist.txt
?