7zを使用してディレクトリ内のすべてのファイルとディレクトリ(隠しファイルを含む)をアーカイブする方法は?

7zを使用してディレクトリ内のすべてのファイルとディレクトリ(隠しファイルを含む)をアーカイブする方法は?

私の保管要件の性質のため、固定tar.gzアーカイブが気に入らず、代わりに7zを使用しました。

これを行うには、次のコマンドを使用します。

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*

~/my/folder/すべてのコンテンツのファイルアーカイブを作成します~/my/folder.7z

しかし~/my/folder/.hiddenFolder、それはあなたのアーカイブに入りません。この問題をどのように解決しますか?*すべてのファイルとフォルダを返すべきではありませんか?

答え1

長い話を短く

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/.

その他の例

ディレクトリ構造の例

test1
├── .hidden
└── normal.txt

0 directories, 2 files

次のコマンドを試してください

  1. ルートフォルダとすべてのコンテンツ。

    7za a test1_a.7z ~/test1/
    

    与えられた

        Date      Time    Attr         Size   Compressed  Name
    ------------------- ----- ------------ ------------  ------------------------
    2017-08-06 09:23:51 D....            0            0  test1
    2017-08-06 09:23:44 ....A            0            0  test1/.hidden
    2017-08-06 09:23:51 ....A            0            0  test1/normal.txt
    ------------------- ----- ------------ ------------  ------------------------
    2017-08-06 09:23:51                  0            0  2 files, 1 folders
    
  2. ルートフォルダと隠しファイルなし

    7za a test1_b.7z ~/test1/*
    

    与えられた

       Date      Time    Attr         Size   Compressed  Name
    ------------------- ----- ------------ ------------  ------------------------
    2017-08-06 09:23:51 ....A            0            0  normal.txt
    ------------------- ----- ------------ ------------  ------------------------
    2017-08-06 09:23:51                  0            0  1 files
    
  3. ルートフォルダはありませんが、隠しファイルが含まれています(私たちが一般的に望むものです)。

    7za a test1_c.7z ~/test1/.
    

    与えられた

       Date      Time    Attr         Size   Compressed  Name
    ------------------- ----- ------------ ------------  ------------------------
    2017-08-06 09:23:44 ....A            0            0  .hidden
    2017-08-06 09:23:51 ....A            0            0  normal.txt
    ------------------- ----- ------------ ------------  ------------------------
    2017-08-06 09:23:51                  0            0  2 files
    

答え2

単一のディレクトリの内容が必要な場合は、簡単な方法はまずそのディレクトリに変更することです。

cd ~/my/folder
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z .

あなたが見ているのは、*それがnotに拡張されることです.。これは文書化された動作であり、名前がaで始まるファイルが隠されていると言う主な理由です.(もう1つはデフォルトlsでは表示されないことです)。

ディレクトリ内のすべてのファイルを一覧表示する本当に便利な移植可能な方法はありません。あなたはそれを使用することができます

~/my/folder/..?* ~/my/folder/.[!.]* ~/my/folder/*

ただし、パターンのいずれかに一致するファイルがない場合、パターンは拡張されていません。 Bashでは、dotglob行間を特別に処理しないようにオプションを設定できます..そして..まだ一致から除外されます)。

shopt -s dotglob
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*

extglobkshまたはこのオプションが設定されている場合は、bashで(またはこのksh_globオプションが設定されている場合はzshで)、.次のものを除くすべてのファイルと一致するパターンを作成できます..

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/@(..?*|.[!.]*|*)

.zshには、スキーマで特別な処理が行われるべきではないと言うより簡単な方法があります。

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*(D)

答え3

いいえ、*すべてのファイルを返す必要はありません。見えるものだけを返します。

より簡単な解決策は次のとおりです。

cd ~/my/folder
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z .

答え4

7z(Linux)を使用してzipアーカイブを抽出しましたが、フォルダはzipでいっぱいです。

私は以下を使用しました:

7z x *.zip -o* to extract the zip files

知っておくべきこと:7z a {上記のコマンドのフォルダ} -r

上記を念頭に置いて7z aコマンドを使用しますが、抽出セクションで作成されたフォルダ名を使用して7zアーカイブを作成したいと思います。では、どうすればいいですか?

関連情報