Попробуйте touch ~ / .hush_login
на удаленном хосте, чтобы подавить motd и некоторые другие вещи. Лучше, чем вмешиваться в конфигурацию sshd IMO.
Вы можете избежать медленного цикла 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
Примечание: я бы проверил следующее на небольшой примерной папке, прежде чем изменять ваш каталог на 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.