/home
매주 Linux(Lubuntu 20.04)를 사용하여 컴퓨터 파티션을 백업 하고 싶습니다 . 문제는 내가 가지고 있는 유일한 추가 하드 드라이브가 Windows 컴퓨터에 연결되어 있다는 것입니다. Windows는 일부 타사 도구 없이는 관리하거나 분할할 수 없는 것 같습니다 ext3
(이러한 도구가 얼마나 안정적인지는 모르겠습니다). ext4
NTFS 볼륨에 백업하는 것 외에는 선택의 여지가 없는 것 같습니다.
자, 여기서 문제가 발생합니다. 옳은 일은 무엇입니까?
비슷한 질문을 찾았습니다이 스레드, 그러나 10년 전에 질문을 받고 답변을 받았습니다(허용된 답변보다 더 구체적인 두 번째 답변에 대해 이야기하고 있습니다). 편의상 관련 부분을 여기에 복사했습니다.
지원:
ionice -c2 -n5 nice -n9 tar czvf - /media/somelinuxdrivepath | split -b 16m - /media/usb/ntfsmounted/back.tar.gz.
백업 복사본에서 복원하려면:
ionice -c2 -n5 nice -n9 cat /media/usb/ntfsmounted/back.tar.gz.* | tar xzvf - /media/somenewlinuxpath
하지만 이 답변에 대해 다음과 같은 세 가지 질문이 있습니다.
- 10년이라는 시간은 긴 시간인데, 그 이후로 좀 더 믿을 수 있고/또는 좀 더 편리한 것이 나올 수도 있지 않을까?
- 명령 앞의 부분을 잘 이해하지 못하고
tar
시도해 보았지만 내 범위를 벗어났습니다. - 제 경우에는 /home 파티션 크기가 200GB를 넘었습니다. 주중에 파일 몇 개만 변경한다면 주말마다 모든 파일을 백업하는 것이 합리적입니까? 이와 같은 것이
Rsync
논리적인 선택처럼 들리지만 파티션을 완전히 복구하는 데 사용할 수 있는 전체 복사본일까요?
답변1
Linux에서 ntfs와 다른 파일 시스템 간에 복사할 때 및 다음을 사용하여 파일의 권한/소유권을 백업/복원할 수 getfacl
있습니다 setfacl
.
지원:
cp -rv /home /mnt/ntfs_vol
getfacl -R /home | xz -9 > /mnt/ntfs_vol/home_permissions.txt.xz
다시 덮다:
cp -rv /mnt/ntfs_vol/home /
setfacl --restore <(xzcat /mnt/ntfs_vol/home_permissions.txt.xz)
편집하다:
이전 의견에서 누군가가 공식 및 비공식 백업/검증의 차이점을 언급했습니다. 이를 다음 rsync
으로 대체할 수 있습니다 cp
.
TS=$(date '+%Y%m%d%H%M%s') ; rsync -avv /home \
/mnt/ntfs_vol \
--log-file="/mnt/ntfs_vol/rsync.${TS}.log" && \
getfacl -R /home \
| xz -9 > "/mnt/ntfs_vol/home_permissions.${TS}.txt.xz"
인용하다:
https://superuser.com/questions/1002074/linux-command-line-to-create-a-log-file-for-rsync
이보다 더 공식적인 확인이 필요한 경우 매니페스트의 암호화 해시를 생성할 수도 있습니다.
apt install parallel
TZ=$(date '+%Y%m%d%H%M%s') ; find /home \
-type f | parallel sha256sum {} \
> "/mnt/ntfs_vol/backup.${TZ}.manifest"
그리고 다음을 확인하세요:
sha256sum --quiet -c /mnt/ntfs_vol/backup.2023122707571703692656.manifest
이름이나 어떤 이유로 tar를 좋아하지 않지만 아카이브 형식을 좋아한다면 또 다른 일반적인 대안이 있습니다.
find /home | cpio -vo > /mnt/ntfs_vol/archive.cpio
이 형식의 내용을 확인하면 다음과 같습니다.
find /usr/include/ | cpio -o | hexdump -C | head -n 20
00000000 c7 71 1d 00 9c 09 ed 41 00 00 00 00 01 00 00 00 |.q.....A........|
00000010 83 65 9c 05 0e 00 00 00 00 00 2f 75 73 72 2f 69 |.e......../usr/i|
00000020 6e 63 6c 75 64 65 2f 00 c7 71 1d 00 f9 47 ed 41 |nclude/..q...G.A|
00000030 00 00 00 00 01 00 00 00 92 64 2a 63 16 00 00 00 |.........d*c....|
00000040 00 00 2f 75 73 72 2f 69 6e 63 6c 75 64 65 2f 69 |../usr/include/i|
00000050 70 72 6f 75 74 65 32 00 c7 71 1d 00 f2 d6 a4 81 |proute2..q......|
00000060 00 00 00 00 01 00 00 00 6b 64 f8 6b 20 00 00 00 |........kd.k ...|
00000070 f7 04 2f 75 73 72 2f 69 6e 63 6c 75 64 65 2f 69 |../usr/include/i|
00000080 70 72 6f 75 74 65 32 2f 62 70 66 5f 65 6c 66 2e |proute2/bpf_elf.|
00000090 68 00 2f 2a 20 53 50 44 58 2d 4c 69 63 65 6e 73 |h./* SPDX-Licens|
000000a0 65 2d 49 64 65 6e 74 69 66 69 65 72 3a 20 47 50 |e-Identifier: GP|
000000b0 4c 2d 32 2e 30 20 2a 2f 0a 23 69 66 6e 64 65 66 |L-2.0 */.#ifndef|
000000c0 20 5f 5f 42 50 46 5f 45 4c 46 5f 5f 0a 23 64 65 | __BPF_ELF__.#de|
000000d0 66 69 6e 65 20 5f 5f 42 50 46 5f 45 4c 46 5f 5f |fine __BPF_ELF__|
000000e0 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 6d 2f |..#include <asm/|
000000f0 74 79 70 65 73 2e 68 3e 0a 0a 2f 2a 20 4e 6f 74 |types.h>../* Not|
00000100 65 3a 0a 20 2a 0a 20 2a 20 42 65 6c 6f 77 20 45 |e:. *. * Below E|
00000110 4c 46 20 73 65 63 74 69 6f 6e 20 6e 61 6d 65 73 |LF section names|
00000120 20 61 6e 64 20 62 70 66 5f 65 6c 66 5f 6d 61 70 | and bpf_elf_map|
00000130 20 73 74 72 75 63 74 75 72 65 20 64 65 66 69 6e | structure defin|
매우 간단합니다. 프로그래밍 경험이 없어도 이 형식을 스스로 풀어내는 방법을 필연적으로 알아낼 수 있으며, 더 좋은 점은 46년 동안(2023년 기준) 실제로 변경되지 않았다는 것입니다.
답변2
가장 좋은 방법은 무엇입니까?
/home
을 고려하면운영 체제, NTFS 파티션에 백업하지 마십시오. 요즘 비싸지 않은 두 번째 디스크를 추가하고 해당 디스크를 EXT4 또는 XFS(Linux가 지원하는 것)로 포맷합니다.
그러나 다양한 제한 사항을 고려하여 기존 저장소 중 일부만 사용하고 싶지만 NTFS인 경우에는 다음 /home
을 사용하십시오 .아스팔트. tar 파일은 모든 권한을 유지한 다음 압축을 풀면 홈 폴더가 복원됩니다. 백업을 위해 NTFS 파티션을 사용해야 할 때 충분히 잘 작동하며 Linux 및 NTFS 권한 문제를 해결하는 쉬운 방법입니다.
/etc/crontab
->0 1 * * * root /usr/local/backuphome.sh
매일 오전 1시에 실행됩니다./usr/local/backuphome.sh
다음 내용을 포함하는 스크립트를 만듭니다.chown root.root backuphome.sh; chmod 700 /backuphome.sh
#!/bin/bash
today="$(date '+%Y-%m-%d')"
tar -cf /ntfsdisk/backup/home_$today.tar /home