Я пытаюсь сделать копию завершенных файлов, которые сохраняются в папку сохранения торрента. Я создал скрипт bash, используя inotifywait для просмотра папки. Мой оригинальный скрипт отлично работал с файлами и папками/подпапками. Как только я заменил -e create -e move_to на -e close_write, он больше не распознает папки, сохраненные в папке просмотра. Теперь работает только с файлами. Причина, по которой мне нужно перейти на это, заключается в том, что многие мои файлы большие (и несколько в папках), и для их полного сохранения требуется некоторое время, а сценарий выполняет все процессы до их завершения.
Я также пробовал команду ожидания, но она вообще ничего не делает. Я знаю, что есть более сложные/лучшие/правильные способы его использования, но я еще не понял их.
Вот пример моего скрипта. Любое руководство будет оценено. Я не очень хорошо разбираюсь в написании сценариев bash, поэтому извините, если это беспорядок.
WATCHED=/mnt/Seeding
DESTINATION=/mnt/Complete-Torrents
user=userid
group=groupid
perms=777
# Step 1 - Copying completed torrents to Complete-Torrents folder leaving original torrents to seed
inotifywait -m -e close_write --format %f $WATCHED \
| while read new
do
echo Detected new torrent $new, Copying to Complete-Torrents folder
cp -r "$WATCHED/$new" "$DESTINATION/"
wait
# Step 2 - Deleting unwanted files from Complete-Torrents folder
echo Deleting unwanted files from Complete-Torrents folder
find $DESTINATION -type f -iname "*.txt" -delete
find $DESTINATION -type f -iname "*.nfo" -delete
find $DESTINATION -type f -iname "*.website" -delete
find $DESTINATION -type f -iname "*.exe" -delete
find $DESTINATION -type f -iname "*.html" -delete
find $DESTINATION -type f -iname "*.htm" -delete
find $DESTINATION -type f -iname "*.sfv" -delete
find $DESTINATION -type f -iname "*.parts" -delete
find $DESTINATION -type f -iname "*.jpg" -delete
find $DESTINATION -type f -iname "*.png" -delete
find $DESTINATION -type f -iname "*.doc" -delete
sleep 10
# Step 3 - Change permissions of new files in Complete-Torrents folder
echo Changing ownership and permissions to Complete-Torrents folder and files
chown -R $user:$group "$DESTINATION"
chmod -R $perms "$DESTINATION"
done
Спасибо, Шон
РЕДАКТИРОВАТЬ...
Я не могу на всю жизнь заставить этот скрипт даже увидеть новую папку, добавленную в папку просмотра. Он буквально НИЧЕГО не делает. Если я заменю close_write
на create
и moved_to
и не внесу никаких других изменений, он увидит папку и содержимое и обработает правильно. Я нахожу это очень странным.
На самом деле я даже пытался сделать небольшой тестовый скрипт, чтобы посмотреть, смогу ли я заставить его работать с оператором if/elif/else, но еще раз, когда я копирую папку в папку просмотра, скрипт ничего не делает (даже не делает к петле). Если я помещаю файл, он обеспечивает правильный вывод.
Вот тестовый скрипт, который я запустил. Может ли кто-нибудь еще подтвердить, может ли он правильно распознать и обработать новую папку?
#!/bin/bash
WATCHED=/mnt/Watched
inotifywait -re close_write --format '%w%f' -m $STEP1_WATCHED \
| while read -r new
do
if [[ -d "$new" ]]; then
echo "Detected new folder $new"
elif [[ -f "$new" ]]; then
echo "Detected new file $new"
else
echo "neither $new"
fi
done
done
$STEP1_WATCHED
? - person Roadowl   schedule 16.12.2020close_write
?Can someone else confirm if they can get a new folder to be recognized and processed correctly?
Зачем вам это нужно, после прочтения справочной страницы ясно, чтоclose_write
не обнаружит создание новой папки. Он говоритA watched file or a file within a watched directory was closed, after being opened in writeable mode
- почему вы ожидаете, что будет обнаружено создание каталога? - person KamilCuk   schedule 16.12.2020~/tmp/
, который не слишком глубоко вложен и/или заполнен. Настройка часов может занять некоторое время! Когда часы были настроены, яtouch
отредактировал файл в каталоге и получилDetected new file /home/<user>/tmp/foo-bar-baz
. - person Roadowl   schedule 16.12.2020-e close_write -e create -e moved_to
и, если обнаружите создание папки, затем рекурсивно обнаружить изменения в этой папке. Но такой дизайн потребует некоторых скриптов. - person KamilCuk   schedule 16.12.2020