tarコマンドを使用するときに既存のファイルを上書きするのを防ぐ方法は?

tarコマンドを使用するときに既存のファイルを上書きするのを防ぐ方法は?

これアスファルト1時間前、バックアップ用にtarを作成しようとしたときに、コマンドは私のファイルを上書きしました。

私は走った

tar zcvf foo.tex foo.bib

その後、私のtexのソースファイルが失われました。もっと悪いことは、このようにファイルを失ったのが今回が2番目であるということです。

私はgvimを使用していますが、 'u'コマンドは私のファイルを復元します。 「バックアップ」、「ファイルの元に戻す」に関するいくつかのヘルプトピックを調べた後、tarコマンドが私のファイルを上書きしないようにする方法が見つかりません。

その後、「-i」などのパラメータを見つけようとします。CPまたはMVしかし、多くのパラメータの中でアスファルト見つかりません。

次に、新しいfoo.tarエントリを追加することを覚えているかどうか少し自信がないので、これが再度発生しないようにする方法を知りたいです。

答え1

ファイルに追加します.bash_loginalias 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ない単一文字オプションは、-オプションを指定する古い/元の方法です。私のようにUNIX恐竜たちもこれを使う傾向があるが、混乱しているようだ。 tar.

答え4

まず、正しい文字を覚えるのは簡単です。

  • czf=圧縮ファイルの生成
  • xzf=圧縮ファイルを解凍する

このように考えると、常に正しいはずです。

重要なデータに関連する別のタスクは、バージョン管理を通じてデータを管理することです。私はgitこれをお勧めします。すべての履歴をローカルに保存し、すべての履歴を別のメディアにプッシュできます。 - 非常に便利で、バックアップにtarを使用する必要はなくなりました。

関連情報