최근에 2테라 짜리 하드디스크가 고장나서 안에 있던 파일들을 통째로 다른 곳으로 옮겨야 할 상황이 생겼다. 파일이 용량이 작으면 그냥 삼바(SAMBA)를 이용해서 윈도우에서 작업해도 되는데 용량이 크다 보니 로컬에서 터미널을 열어서 하드디스크 통째로 옮기는 작업을 해야 하는 상황이었다.
리눅스에서 파일 복사하는 것이야 어렵지 않고, 또한 ‘리눅스 CP 명령어 옵션’을 검색해보면 결과가 많이 나오지만, 하드 디스크 통채로 복사할 일이 잘 없다 보니 매번 복사할 때마다 예전에 사용했던 옵션이 잘 생각이 안나는 것이었다. 옵션이 너무 많다 보니 필요한 옵션을 골라내기가 쉽지 않다.
하드 전체를 복사할 때에는 각 폴더와 파일의 날짜,속성을 그대로 유지한 채로 복사해야 하는데, 그때 사용하는 옵션들을 이번 기회에 정리해 두었다가 다음번에도 편리하게 사용하려 한다. 설명이 길었는데 간단히 요약하면 딱 아래와 같이만 하면 된다.
sudo cp -apr /sourcedirectory/myfolder /targetdirectory
sudo를 이용하여 root권한으로 sourcedirectory에 있는 myfolder라는 폴더를 통채로 targetdirectory 밑에다가 그대로 복사하라는 명령어다. 복사 도중에는 파일 소유자가 root로 잠겨 있어서 안의 내용을 볼 수는 없지만 복사가 끝나면 원래 소유자로 넘어가서 내용을 확인할 수 있다.
폴더채로 복사하는 것이 아닌 디스크 전체를 복사할 경우에는 마운트된 폴더에 와일드카드(*)를 붙이면 된다. 예를 들면 /mnt/sourcediskA에 마운트된 하드 전체를 /mnt/targetdiskB로 그대로 복사하는 경우 아래와 같이 하면 된다.
sudo cp -apr /mnt/sourcediskA/* /mnt/targetdiskB
몇시간에 걸친 복사가 끝난 후 디렉토리를 확인해보니 하위 폴더를 포함한 파일들까지 전부 원본 날짜와 소유자를 그대로 유지한 채 잘 복사되어 있다. 이 CP 명령어 옵션을 진작에 알았더라면 좋았을텐데 2010년에 새 서버를 구성할 때에는 멋모르고 그냥 단순히 cp명령어로 복사해 버리는 바람에 복사된 디렉토리의 날짜가 전부 2010년으로 리셋되어 버렸던 아픈 기억이 있다. 잊지말자 apr 옵션.
글 잘 봤습니다. 질문이 있는데 파일이 원본 날짜를 잘 가지고 있다는 뜻이, 수정한 날짜뿐만 아닌 만든 날짜와 액세스한 날짜 등의 모든 정보를 원본과 같이 그데러 가지고 있다는 건가요? 정말로 모든, 모든속성이 다 복제되듯 그대로 복사되는 건가 해서요
글쎄요. 제가 이 글을 쓴 거는 폴더의 날짜 보존을 위해서 였는데, 각 파일의 액세스 날짜 등은 윈도우 NTFS에서 제공해주는 속성인 걸로 알고 있습니다. 리눅스 ext4에서도 그 속성이 있는지는 잘 모르겠네요.