Изменение разрешения папки на основе list.txt

Попробуйте touch ~ / .hush_login на удаленном хосте, чтобы подавить motd и некоторые другие вещи. Лучше, чем вмешиваться в конфигурацию sshd IMO.

1
14.03.2017, 13:42
2 ответа

Вы можете избежать медленного цикла bash с помощью чего-то вроде этого, что, кажется, работает нормально в моих тестах:

$ tr '\n' '\0' <file1 |xargs -0 -I{} mv -vt path/to/deny {}  #v for verbose.
#OR
$ cat file1 |xargs -d'\n' -I{} mv -vit path/to/deny {}  # set delimiter to new line

Для пробного запуска вы можете сделать тестируйте так

cat file1 |xargs -d'\n' -I{} echo "mv -vt path/to/deny " {}

PS: Моя команда mv в RHEL и Debian не распознает параметр -R в mv.

Одна из ловушек этого решения заключается в том, что имена каталогов в вашем файле включают символы новой строки как часть их имени каталога. Во всех остальных случаях (например, имена каталогов с пробелами) обе версии протестированы и работают нормально.

Если вы хотите сделать это с помощью цикла, вы можете ускорить процесс, избегая вызова mv для каждой строки, прочитанной вашим файлом. Вы можете «загрузить» все строки / каталоги в массив и впоследствии вызвать mv, например:

$ while IFS= read -r dir; do folders+=("$dir");done < list.txt
$ mv -t path/to/Deny_folder -- "${folders[@]}"  #-R is not available in Red Hat and Debian

Или даже создать своего рода группировку mv:

while IFS= read -r dir; do 
let "a++"
folders+=("$dir")
[ "$a" -gt 1000 ] && mv -vt path/to/Deny_folder -- "${folders[@]}" && a=1 && unset folders 
done < list.txt
1
27.01.2020, 23:46

Примечание: я бы проверил следующее на небольшой примерной папке, прежде чем изменять ваш каталог на 500 ГБ. Кроме того, я бы сделал резервную копию каталога, прежде чем вообще его менять. Несмотря на то, что это 500 ГБ, наличие резервной копии бесценно.

tar -zcvf mybackup.tar.gz big_ol_directory

Затем я переместил бы tar.gz, может быть, просто на ваш локальный компьютер, или на другой компьютер в сети, любой другой компьютер. Две резервные копии в одном месте не так полезны.

Что касается разрешений, мне нравится ваша идея разрешений. Другая идея - использовать разрешения группы для ограничения доступа.

# ensure that no one has access except the owner (root, your user, whatever)
chmod -R 600 big_ol_directory

# alternatively
# chown -R myuser:companygroup big_ol_directory
# chmod -R 660 big_ol_directory

# create a group and add a user:
# https://www.howtogeek.com/50787/add-a-user-to-a-group-or-second-group-on-linux/

# begin granting access to ftpusers 
chown -R root:ftpusers big_ol_directory

# use 770, 760, 740 as desired (g+rw is x6x)
chmod -R g+rw big_ol_directory/public

# files in the root of big_ol_directory, including directories
# other than public, will still be owner-editable only.
0
27.01.2020, 23:46

Теги

Похожие вопросы