
フォルダ構造:
etc (dir)
deploy (dir)
src (dir)
config (dir)
dist
├- config (dir)
├- index.js
私がやりたいのは、ルート構成フォルダ以外のすべてをパックして、 の tar に配置することです。出力にフォルダが存在するdeploy
ことが重要です。次のように開始します。dist/config
tar -czf deploy/deploy.gz --exclude=deploy --exclude="./config/" ./*
$ l ./deploy/deploy0/dist
index.js
router.js
test
しかし、その結果、 が欠落してしまいますdist/config
。 を取得できる唯一の方法dist/config
は、config という名前のものを除外しないことです。
tar -czf deploy/deploy.gz --exclude=deploy ./*
$ l ./deploy/deploy1/dist
config
index.js
router.js
test
OSXとCentOS(開発とビルド)。タールこれは不可能だと私は思います。
これはビルド環境にあり、ファイルは破棄可能なので、不要なフォルダーを削除するだけでこれを回避しました。
答え1
引数を作成するには、次のように使用できますfind
(ただし、少し長くなります)。
find -mindepth 1 ! -wholename './config' ! -wholename './config/*'
mindepth 1
除外する.
と、wholename
ディレクトリ自体とその内容の 2 つの除外があります。
tar -xzf deploy/deploy.gz --exclude="deploy" \
$( find -mindepth 1 ! -wholename './config' ! -wholename './config/*' )
答え2
現在のディレクトリへのドット参照をアーカイブ ルートとして使用するのはアンカーです。
tar --exclude='./deploy' --exclude='./config' -cvf deploy/deploy.tar .
ただし、ディレクトリ名またはワイルドカードを使用する場合は、--anchored
フラグが役立ちます。
tar --anchored --exclude=deploy --exclude=config -cvf deploy/deploy.tar *
答え3
オプションは必ずソース--exclude
、宛先引数の前に配置してください
tar --exclude=deploy --exclude="./config" -cvz deploy/deploy.gz .
答え4
./
除外するファイルの先頭にマーカーを使用できます。
私はこのように使います:
tar --exclude='./build.tar.gz' --exclude='./config' -czf build.tar.gz .