이것아스팔트한 시간 전, 백업하기 위해 tar를 만들려고 했을 때 명령이 내 파일을 덮어썼습니다.
나는 달렸다
tar zcvf foo.tex foo.bib
그런 다음 내 tex 소스 파일이 손실되었습니다. 더 나쁜 점은 이런 식으로 파일을 잃어버린 것이 이번이 두 번째라는 것입니다.
나는 gvim을 사용하지만 'u' 명령은 내 파일을 복원합니다. "백업", "파일 실행 취소"에 대한 일부 도움말 항목을 살펴본 후 tar 명령이 내 파일을 다시 덮어쓰는 것을 방지하는 방법을 찾을 수 없습니다.
그런 다음 "-i"와 같은 매개변수를 찾으려고 합니다.CP또는MV, 그러나 많은 매개변수 중에서아스팔트찾을 수 없습니다.
다음에 새로운 foo.tar 항목을 추가하는 것을 기억할지 조금 확신이 없기 때문에 이런 일이 다시 발생하지 않도록 방지하는 방법을 알고 싶습니다.
답변1
파일 에 추가하세요 .bash_login
. alias tar=tar --backup=simple
덮어쓸 파일에 ~가 추가됩니다.
따라서 아카이브를 생성하면 항상 실행됩니다.
tar --backup=simple zcvf foo.tex foo.bib
실행 후에는 foo.tex~가 존재하게 됩니다. (실제 tex 파일이고, 아카이브는 foo.tex에 위치하게 됩니다.)
답변2
파일 이름을 지정하는 대신 출력 리디렉션을 사용하십시오. 이는 tar뿐만 아니라 많은 명령에 적용됩니다.
물론, 당신의 중국어는 이미 set -o noclobber
(철자도) 되어 있습니다. 그렇죠?set -C
.bashrc
$ tar zc >foo.tex foo.bib
bash: foo.tex: cannot overwrite existing file
이 명령을 자주 실행하는 경우 수동으로 입력하지 마십시오.파일 생성.
foo.tar.gz: foo.tex foo.bib
tar czf $@ $^
백업을 만들기 위한 것이 아니라 다른 사람에게 타르볼을 보내야 하는 경우에만 타르볼을 사용하십시오. 이전 버전을 백업하는 대신버전 관리(CVS, Mercurial, Git 등 원하는 대로). (디스크 장애나 실수로 저장소가 손상되거나 삭제된 경우 저장소를 백업하십시오.)
답변3
foo.tex
이 문제는 tar의 "짧은" 옵션을 사용하면 해당 옵션에 속하는 항목을 난독화하는 방식으로 항목을 결합할 수 있기 때문에 발생합니다 f
.
명령의 전체 버전(최신 버전 포함 tar
)은 다음과 같습니다.
tar --create --file foo.tex --gzip --verbose foo.big
또는 단축 옵션을 사용하십시오.
tar -c -f foo.tex -z -v foo.big
내 경험상 두 경우 모두 파일에 잘못 쓴 경우가 더 분명합니다 foo.tex
.
이 작업을 수행하려면 다음을 수행하십시오.
tar --create --file --gzip --verbose foo.tex foo.big
파일을 받고 --gzip
파일 이름으로 자주 사용하지 않기를 바랍니다. 따라서 덮어쓰기는 문제가 되지 않습니다. (그런데 를 사용하여 이러한 파일 이름을 가진 파일을 삭제할 수 있습니다 rm -- --gzip
.)
tar
없는 단일 문자 옵션은 -
옵션을 지정하는 이전/원래 방법입니다. 나처럼 유닉스 공룡들도 이를 사용하는 경향이 있지만 혼란스러운 것 같다. .tar
답변4
첫째, 올바른 문자를 기억하는 것은 쉽습니다.
czf
= 압축파일 생성xzf
= 압축파일의 압축을 푼다
이렇게 생각하면 항상 옳아야 합니다.
중요한 데이터와 관련된 또 다른 작업은 버전 관리를 통해 데이터를 관리하는 것입니다. 나는 git
이것을 추천한다. 모든 기록을 로컬에 저장하고 모든 기록을 다른 매체에 푸시할 수 있습니다. - 매우 편리하며 더 이상 백업을 위해 tar를 사용할 필요가 없습니다.