Было скопировано с помощью rsync -avz (или -rvz) с сервера на сервер несколько сайтов, и у многих файлов поменялся владелец и сменились права.
Чтобы восстановить права, первое и единственное, что пришло в голову, это:
На исходном сервере запустить ls -lah /www/sait1 > permis.file
пробежаться таким образом по всем папкам, вложенным тоже.
перекинуть результат на новый сервер, распарсить все, и уже обратным образом, пробегая по папкам, назначить нужные права.
Меня смущает сам метод.
Есть более правильное или другое решение сложившейся проблемы?
Про архивацию через tar не предлагать, про нее знаю, проблема возникла - ее надо решать.
Ответ
Самое простое и быстрое, что пришло в голову - это сделать на первой машине
# для данных о каталогах
find / -type d -exec stat -c "%n %a %G %U" {} \; | awk '{print "chown "$3":"$4" "$1"; chmod "$2" "$1}' > dirs.txt
# для данный о файлах
find / -type f -exec stat -c "%n %a %G %U" {} \; | awk '{print "chown "$3":"$4" "$1"; chmod "$2" "$1}' > files.txt
полученные файлы переносятся на целевую машину, изучаются, фильтруются по мере надобности. А потом накатываются с помощью bash
bash dirs.txt
bash files.txt
То есть, вначале накатываются данные для каталогов, а только потом для файлов. Иначе может сложиться ситуация, когда накатить права для файлов не получиться, так как нет доступа.
можно было бы теоретически это все в одну команду выполнить, но мне было лень дописывать фильтрацию каталогов "." и "..".
Комментариев нет:
Отправить комментарий