저는 보통 머신 A를 사용하고 A를 파일 서버 B에 백업합니다. 조만간 어떤 이유로 기계 A를 잃게 될 것입니다. 하드 드라이브가 닳았거나 번개에 맞았거나 일부 판매원이 당황스러울 정도로 오래된 쓰레기라고 믿게 만들었거나 오버클러킹 실험이 끔찍하게 잘못되었거나 "플래시 관련 이벤트"가 발생했습니다.
컴퓨터 C가 컴퓨터 A와 완전히 다르다고 가정해 보겠습니다. 즉, 대용량 저장 장치 인터페이스, 회사 프로세서, 화면 해상도 등이 다릅니다.
재해가 발생하기 전에 컴퓨터 C의 빈 하드 드라이브에 동일한 소프트웨어를 쉽게 설치할 수 있도록 현재 컴퓨터 A에 설치된 모든 소프트웨어를 나열하는 쉬운 방법이 있습니까? 아니면 더 나은 방법은 특정 머신 C에 최적화된 특정 하위 버전과 함께 각 소프트웨어의 최신 버전을 쉽게 설치할 수 있도록 하는 것입니다.
B에 공간이 충분하다면 이것이 가장 간단한 사본인 것 같습니다.모든 것이렇게 하면 B에서 C로 복사하고 싶은 파일과 복사하고 싶지 않은 파일을 구분할 수 있는 좋은 방법이 없을까요? 필요한 경우 쉽게 다시 다운로드(또는 재컴파일)할 수 있는 바이너리를 복사하고 싶지 않으며 어쨌든 C 머신에서는 작동하지 않을 것입니다. 아니면 장기적으로 볼 때 애초에 B에서 쉽게 사용할 수 있는 시스템별 바이너리를 백업하지 않는 것이 더 낫습니까? 바이러스와 트로이 목마가 C로 전달되어 다시 활성화될 가능성을 줄이는 더 좋은 방법이 있습니까?
소프트웨어를 사용자 정의하거나 완전히 새로운 소프트웨어를 작성할 때 내가 조정한 내용을 백업하고 새 컴퓨터로 전송하여 설치할 수 있는 좋은 방법이 있습니까? cron 및 anacron 작업과 같은 작업이 있습니까?
새 컴퓨터 C로 안전하고 원활하게 전환하려면 어떻게 해야 합니까?
(이 질문은 하위 질문을 확장합니다. "rsync 또는 rdiff 백업 문제로 인한 증분 시스템 백업 및 복구"저는 이것이 특히 중요하다고 생각합니다.)
답변1
버전 관리의 $HOME
- /home 디렉터리의 모든 항목을 주기적으로 버전 제어 저장소에 커밋합니다. (프로그래머의 $HOME 디렉토리를 커밋하기 전에 항상 "make superclean"을 수행하는 것을 제외하면 프로그래머는 바이너리 실행 파일이나 기타 쉽게 기계 생성된 파일을 커밋하지 않습니다.)
- 내 작업 컴퓨터에서 고유한 데이터를 "소유"하는 각 사용자에 대해 내 파일 서버에 해당 사용자의 전체 $HOME 디렉터리("전복의 $HOME")가 포함된 일종의 버전 제어 저장소가 있는지 확인합니다. 문자 그대로 이 키보드를 만지는 사람은 나뿐이지만 나에게는 단 한 명의 사용자도 있습니다. 악성 코드에 감염될 수 있는 수많은 게임을 설치하는 것을 좋아하는 신뢰할 수 없는 웹 브라우저, 종종 끔찍한 버그가 있는 소프트웨어를 작성하는 C 프로그래머. 그가 루트 사용자인 봇 사용자를 실수로 삭제하지 않도록 그를 모래 속에 격리시킵니다.
- 버전 제어 작업 디렉터리인 $HOME 디렉터리에 모든 "내" 파일을 보관합니다.
- 텍스트 파일, 사진, 웹 브라우저 북마크 파일 등 - 모두 홈 디렉토리에 있습니다.
- 다른 하위 디렉터리로 이동해야 하는 배치 스크립트를 작성하는 경우 마스터 복사본을 내 $HOME 디렉터리 어딘가에 보관하고 다른 하위 디렉터리에서 마스터 복사본으로의 소프트 링크를 만듭니다.
- 다른 하위 디렉터리로 이동해야 하는 컴파일된 소프트웨어를 작성하는 경우 기본 소스 코드와 Makefile을 $HOME 디렉터리의 일부 하위 디렉터리에 보관하고 "make install"이 자동으로 해당 디렉터리에 바이너리 실행 파일을 설치하도록 Makefile을 설정합니다. 다른 하위 디렉터리.
- 일부 소프트웨어의 버그를 수정하면 버그 수정 내용을 업스트림으로 전달해 주세요.
- "좋아하지만 기본적으로 설치되지 않는 앱" 및 "보통 기본적으로 설치되지만 마음에 들지 않는 앱" 목록을 내 $HOME 디렉터리의 텍스트 파일에 보관하세요. 바라보다Ubuntu(Linux)에 설치된 패키지를 추적하는 방법은 무엇입니까?또는Fedora(Linux)에 설치된 패키지를 추적하는 방법은 무엇입니까?
- CD나 DVD로 소프트웨어를 구매하는 경우 파일 서버에 ISO 이미지를 백업하고 해당 이미지를 업무 컴퓨터에 설치합니다. (내 업무용 컴퓨터에는가지다광학 드라이브).
나중에 A 기계가 분실되었을 때,
- 모든 기본 소프트웨어를 포함하여 제가 가장 좋아하는 금주의 배포판의 최신 버전을 머신 C에 설치합니다.
- 각 사용자에 대해 최신 버전(HEAD)에 대한 버전 제어 검사를 수행합니다. 단, 모든 바이너리 실행 파일을 건너뛰는 것은 어떻게든(?) 제외됩니다. 이를 통해 특정 유형의 바이러스 및 트로이 목마가 C로 확산되는 것을 방지할 수 있습니다.
- 내 홈 디렉터리 외부에 다른 것을 설정합니다.
- 내 앱 목록을 확인하고 필요하지 않은 앱을 제거하세요.
- 내 앱 목록을 확인하고 내가 원하는 최신 버전을 설치하세요. 최신 버전에는 제가 전달한 버그 수정 사항이 포함되어 있기를 바랍니다. (이 프로세스를 자동화하는 방법은 위 링크를 참조하세요)
- 내가 작성하는 모든 컴파일러에서 "make superclean"과 "make install"을 수행하십시오.
- 어떻게든(?) 배치 스크립트가 "필요한" 위치를 기억하고 해당 위치에서 내 /home/ 디렉토리의 기본 소스로 연결되는 소프트 링크를 만듭니다. (이것을 자동화하는 방법이 있나요?)
- 어떻게든(?) cron 및 anacron 작업으로 실행한 모든 것을 기억하고 다시 입력합니다.
- 파일 서버의 ISO 이미지에서 CD로 구입한 소프트웨어를 설치합니다.
- ...내가 놓친 게 또 있나요?
답변2
먼저 이 주제에 대한 이전 스레드를 읽어보세요.Linux 설치를 새 컴퓨터로 이동(동일한 아키텍처의 경우)하드웨어가 다른 컴퓨터 간에 구성을 마이그레이션하려면 어떻게 해야 합니까?. 여기에서는 이전에 다루지 않았던 몇 가지 사소한 문제에 대해 논의하겠습니다.
아키텍처가 동일한 컴퓨터로 이동 중이고 디스크가 만료되지 않은 경우 디스크를 새 컴퓨터로 이동하면 됩니다. 이는 데이터를 더 큰 디스크로 이동하는 것과 완전히 독립적으로 수행될 수 있습니다. 여기서 "동일한 아키텍처"는 프로세서 아키텍처 유형을 의미합니다. 현재 PC에는 두 가지 유형만 있습니다.x86-32(일명 i386, ix86, IA-32, ...) 및x86-64(일명 amd64, Intel 64,...). 특정 칩셋이나 프로세서 변형, 비디오 장치, 저장 인터페이스 등은 여기서 중요하지 않습니다. (스토리지 인터페이스가 호환되지 않거나 컴퓨터 중 하나가 노트북인 경우 어댑터를 찾거나 네트워크를 통해 복사해야 합니다.)
드라이브 오류(가장 취약한 구성 요소 중 하나) 발생 시 백업을 수행하려면 다음 두 가지 옵션이 있습니다.
- 전체 디스크 또는 파티션의 비트 단위 복사본을 만듭니다. 그런 다음 직접 복원하거나 긴급 상황 발생 시 백업에서 실행할 수도 있습니다. 이것이 전략이라면 증분 업데이트를 위한 파일 수준 도구가 여전히 필요합니다.
- 파일을 백업하세요. 복원하려면 파일을 다시 설치한 다음 복원하세요.
기본 설정은 새 컴퓨터로 이동할 때 변경해야 하는 파일이 거의 없이 모든 것을 복사하는 것입니다. 32비트 PC에서 64비트 PC로 마이그레이션하고 64비트 운영 체제가 설치된 새 PC를 사용하려는 경우 운영 체제(최신 unice 포함)를 다시 설치해야 합니다. 그렇지 않으면 컴퓨터에서 잘못된 콘텐츠가 발생할 수 있습니다. Windows 또는 기타 운영 체제로 이전됩니다.
귀하가 사용하는 모든 컴퓨터(기존 및 새 컴퓨터, 가정용 데스크톱 및 개인 노트북 등)에 데이터가 있는지 더 쉽게 확인하려면 해당 데이터가 시스템 수준이 아닌 자신의 홈 디렉터리에 있는지 확인하세요. Ubuntu 또는 기타 "사용자 친화적인" 용어에서 이는 비밀번호를 입력할 필요가 없는 사용자 정의 방법을 의미합니다. 그러나 사용자 정의가 하드웨어(예: 화면 해상도)에 크게 의존하는 경우 시스템 수준에서 사용자 정의를 수행하십시오.
1 이는 대체로 가정적인 내용입니다. 오늘날 대부분의 데스크톱 컴퓨터에는 여전히 IDE 인터페이스가 있으며 1980년대 후반 이후의 모든 일반적인 내부 하드 드라이브와 호환됩니다. 물론 이전 컴퓨터를 모두 업그레이드했습니다.
답변3
Debian과 유사한 Linux를 사용한다고 가정합니다.
머신 A에서 주기적으로 실행:
dpkg --get-selections > /mnt/bakup/backup.pkg.lst
backup.pkg.lst 파일을 안전한 곳에 저장하세요.
재해가 발생하면 C 시스템(또는 A)에 최소 설치(GUI 없이도)를 수행하고 루트로 실행합니다.
dpkg --set-selections < /mnt/floppy/backup.pkg.lst apt-get update apt-get dselect-upgrade apt-get dist-upgrade apt-get upgrade
백업에서 /home 디렉토리를 복원하세요.
답변4
가상 머신에서의 삶
- 회사 컴퓨터에 가상 머신을 설정합니다. 나의 모든 실제 작업은 이 가상 머신에서 이루어집니다.
- 주기적으로 가상 머신을 일시 중지하고 가상화된 디스크와 가상 시스템 상태를 파일 서버에 백업합니다. (컴퓨터를 사용하는 동안 백그라운드에서 전체 또는 대부분을 수행할 수 있는 방법이 있습니까? 그래서 마지막 몇 가지 항목을 백업할 수 있을 만큼만 잠시 일시 중지하면 됩니까?)
나중에 A 기계가 분실되었을 때,
- 새 작업 시스템에 편리한 호스트 운영 체제 C를 설치하십시오.
- 작업 머신 C에 가상 머신 플레이어를 설치합니다.
- 가상화된 디스크 파일과 가상 시스템 상태 파일을 파일 서버에서 머신 C로 복사합니다.
- 가상 머신 플레이어를 실행하여 가상 머신 일시 중지를 해제하세요.
아쉽게도 이제 C는 A가 수집한 모든 바이러스와 트로이 목마를 실행하고 있습니다. 이들 중 적어도 일부를 중지할 수 있는 방법이 있습니까?