Meminta bantuan untuk mengoptimalkan pencarian yang memakan waktu ini dengan dua perintah chmod per file

0

Saya sudah perintah ini dalam file .sh

sudo find $PROJECT_ROOT -type f \
     -exec sudo chmod ugo-x '{}' \; \
     -exec sudo chmod go-w '{}' \; 

Seperti yang Anda lihat, untuk setiap file saya harus menghapus izin menulis untuk grup dan lainnya, meninggalkan 'sebagaimana adanya' izin menulis akhirnya untuk pengguna.

DAN hapus izin eksekusi untuk setiap orang.

Saya bertanya kepada Anda apakah ada cara untuk mengoptimalkan ini ... Saya tidak punya banyak pengalaman chmod tapi ini memakan waktu: 4-5 menit per folder proyek, untuk masing-masing 41 proyek aktual kami dan ini harus dijalankan 2 kali per minggu. (Tolong jangan tanya MENGAPA, itu tidak penting, saya harus MELAKUKANNYA)

realtebo
sumber

Jawaban:

1

Selain jawaban @ Sisir, hal pertama yang dapat Anda lakukan adalah menggunakan "+" bukannya ";" dalam perintah find. Ini membuatnya menjalankan satu perintah tunggal pada semua file yang cocok alih-alih satu perintah per file:

sudo find $PROJECT_ROOT -type f -exec chmod a-x,go-w '{}' +

Jika proyek berisi terlalu banyak file (ada batasan pada panjang baris perintah) Anda masih dapat menggunakan satu file chmod per direktori dengan skrip tambahan kecil:

#! /bin/bash
# chmod's all files in the $1 directory
find "$1" -maxdepth 1 -type f -exec chmod a-x,go-w {} +

lalu:

sudo find $PROJECT_ROOT -type d -exec chmod_script {} \;

(btw, saya pikir Anda tidak perlu sudo pada perintah yang dieksekusi oleh find, biasanya akan mewarisi userid dari find?)

xenoid
sumber
Terima kasih, saya tidak tahu saya bisa menggabungkan beberapa variasi izin dalam satu perintah CHMOD. Saya sedang mencoba. Saya akan segera membalas Anda dengan esit
realtebo
Wow ! Totale mid time per proyek sekarang 52% dari sebelumnya. Terima kasih! Juga, saya mengkonfirmasi bahwa kita tidak perlu "sudo over sudo".
realtebo
1

Sederhanakan perintah sebagai berikut dan kemudian periksa apakah itu meningkatkan kinerja:

sudo find $PROJECT_ROOT -type f -exec sudo chmod a-x,go-w '{}' \; 
Sisir
sumber