텍스트 파일을 편집할 때 여러 개의 백업을 가질 수 있습니까?

텍스트 파일을 편집할 때 여러 개의 백업을 가질 수 있습니까?

Gedit내가 아는 한, medit백업을 저장할 수 있는 텍스트 편집기가 두 개 있습니다. 그래서 temp.txt다음에 편집할 때 이라는 파일을 만들어서 저장 하면 temp.txt~.

내 질문은 다음과 같습니다. 여러 개정판 전에 존재했던 파일로 돌아가려는 경우 여러 백업을 가질 수 있도록 백업 이름을 순차적으로 지정할 수 있는 텍스트 편집기가 있습니까? 예를 들어, temp.txt최신 버전이 있는데 잠깐만 temp.bak.1temp.bak.2?

이것이 가능하지 않은 경우 직렬 버전이 보존되도록 백업이 생성될 때마다 백업 이름을 자동으로 바꾸는 일부 스크립트가 있습니까? 하나라도 temp.timestamp.txt좋을 것입니다.

nano( 텍스트 편집기 솔루션은 마음에 들지 않습니다 .)


명확히 해야 할 점은 저는 코더나 프로그래머가 아니라는 것입니다. 내가 편집한 텍스트 파일의 이전 버전을 갖고 싶습니다. 이러한 텍스트 파일은 .css테마의 일부를 구성할 수 있습니다. 따라서 테마 파일의 특정 측면을 편집하는 경우 변경 사항이 마음에 들지 않을 경우를 대비해 약간 뒤로 돌아갈 수 있습니다..rc.svg

답변1

Mercurial을 사용하여 버전 관리를 수행하는 쉬운 방법이 있습니다. 먼저 설치하세요.

~/.hgrcMercurial을 구성하려면 다음 콘텐츠가 포함된 파일을 만듭니다.

[ui]
username = Your name <your mail>
verbose = True

일부 Mercurial 서버를 사용하는 경우 이 파일에 더 많은 정보를 추가할 수 있습니다(읽기 man hgrc).

그런 다음 cd텍스트 파일이 포함된 디렉터리로 이동합니다. 예를 들어:

> cd /tmp
> mkdir data && cd data
> cat > text_file.txt
Hello, this is a file.

원하는 만큼 파일을 추가할 수도 있습니다. 그런 다음 Mercurial을 초기화해야 합니다.

> hg init

기본적으로 아직 파일이 없으므로 모든 파일을 포함하고 싶다고 Mercurial에 말해야 합니다.

> hg st
? text_file.txt
> hg add    
adding text_file.txt
> hg st
A text_file.txt

이제 간단한 커밋을 수행합니다.

> hg comm -m 'first run'
text_file.txt
committed changeset 0:87e90c949984

이제 몇 가지 사항을 수정하고 차이점을 확인하세요.

> cat >> text_file.txt 
Add one line.
> hg diff
diff -r 87e90c949984 text_file.txt
--- a/text_file.txt Mon Apr 01 12:52:14 2013 +0400
+++ b/text_file.txt Mon Apr 01 12:53:47 2013 +0400
@@ -1,1 +1,2 @@
 Hello, this is a file.
+Add one line.

이제 시청한 후 또 다른 커밋을 해보세요 hg log. 두 개의 커밋이 표시됩니다.

첫 번째 커밋으로 돌아가려면 다음을 수행하세요.

> hg upd -r 0:87e90c949984
resolving manifests
getting text_file.txt
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> cat text_file.txt 
Hello, this is a file.

다음과 같은 내용이 표시됩니다. 파일이 오래되었습니다.

이제 마지막 파일을 복원하십시오.

> hg upd                  
resolving manifests
getting text_file.txt
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> cat text_file.txt 
Hello, this is a file.
Add one line.

간단한 스크립트를 작성할 수도 있습니다.

#!/bin/bash
while true; do
  hg commit -m "commit: $(date)"
  sleep 60
done

파일 편집을 시작할 때 이를 실행하면 매 순간 변경 사항을 확인하고, 그렇다면 mercurial이 새로운 커밋을 수행합니다. 또한, 댓글에서 언급했듯이 자동 제출을 위해 ator 를 사용할 수도 있습니다.cron

답변2

사용하자는 제안에 동의합니다.버전 관리. 백업 파일을 보관하는 것보다 유연하고 안정적이며 설정도 쉽습니다.

그래도 백업 파일(및 기타 여러 가지)을 세밀하게 제어하려면 Emacs를 사용할 수 있습니다. 설정version-control세션 t당 하나의 백업 파일을 보관하는 대신 번호가 매겨진 백업을 만드는 변수입니다 . 그냥 누르는 대신 새로운 백업을 생성하고 싶을 때 누릅니다.(setq version-control t)~/.emacsC-u C-x C-sC-x C-s

또 다른 접근 방식은 애플리케이션이 백업에 대해 알고 있는지 여부에 관계없이 백업을 수행하는 파일 시스템을 사용하는 것입니다.파일 시스템 복사모든 디렉터리 트리 위에 이러한 파일 시스템을 만듭니다.

답변3

Geany에는 적합한 플러그인도 함께 제공됩니다. 저는 Lubuntu 13.10에서 Geany 1.23.1을 사용하고 있습니다. 딸깍 하는 소리도구,플러그인 관리자이것을 보여주세요:

플러그인 관리자 대화 상자

여기에서 확인란을 선택한 Save Actions다음편집하다,플러그인 환경설정, 백업 저장 방법을 설정할 수 있습니다.

저장 작업 대화 상자

답변4

조금 늦었지만 nano(적어도 현재 데비안 버전 2.2.6에서는) 및 플래그를 사용하여 고유한 백업 기능을 구현할 수 있습니다.-B-C

데비안 매뉴얼 페이지에서:

   -B (--backup)
          When saving a file, back up the previous version of it to the  current  filename
          suffixed with a ~.

   -C dir (--backupdir=dir)
          Set  the  directory  where  nano  puts  unique  backup files if file backups are
          enabled.

이를 기본값으로 만들려면 플래그가 포함된 nano에 대한 bash 별칭을 만들고 적절한 위치에 배치합니다(다음 줄을 추가하면 /home/username/.bash_aliases도움이 됩니다).

alias nano='nano -BC /home/username/.nano_backups'

그러면 지정된 디렉터리에 백업이 생성됩니다. 예:

$ ls /home/username/.nano_backups
!home!username!.bash_aliases~
!home!username!.bash_aliases~.1
!home!username!.bash_aliases~.10
!home!username!.bash_aliases~.11
!home!username!.bash_aliases~.12
[...]

관련 정보