Webサイトをあるサーバーから別のサーバーに移動していますが、Gitはファイル権限などのメタデータを保存しません。それぞれ775/664以外のディレクトリとファイルを見つける必要があります。
今では、次のようによく編まれた設定を使用しています。
$ find . -type d -exec ls -la {} \; | grep ^d | grep -v ^drwxrwxr-x
$ find . -type f -exec ls -la {} \; | grep -v ^d | grep -v ^-rw-rw-r-- | grep -v '.git'
これが動作している間、私はそれがやや陳腐だと思います。これを行うより良い方法はありますか?正式な方法でしょうか、それともハッキングする必要がありますか?
最新のUbuntuバージョンで実行され、BashでGNUツールを使用します。
答え1
find -type d -not -perm 775 -o -type f -not -perm 664
-perm 775
とまったく同じ権限を一致させます775
。-perm 664
で同じことを行います664
。-not
(boolean NOT) は次のテストを無効にするので、現在と正反対の作業を行います.この場合、正しい権限がないすべてのファイルです。-o
(ブールOR)2つのテストセットをまとめてグループ化し、そのうちの1つがテストされたときに一致します。優先順位が最も低いため、テストを2つの異なるグループに分けます。あなたもできますかっこを使うより具体的に。ここでは、権限が異なるディレクトリ775
と権限が異なる一般ファイルを一致させます664
。
2つの別々のディレクトリとファイルコマンドが必要な場合は、半分に切り捨て、-o
各半分を別々に使用します。
find -type f -not -perm 664
find -type d -not -perm 775
答え2
あなたのコードが何を達成しようとしているのかわかりません。権限のないファイルとディレクトリを見つける理由は、ファイルとディレクトリを変更することがよくあります。
これがUbuntu 16.04で正常に使用されたものです。
find \! -perm 775 -type d -exec chmod 775 {} \;
find \! -perm 664 -type f -exec chmod 664 {} \;
これは証明された!シンボルがエスケープされました。