Перемещение файлов

Автор Андрей_1, 17 сентября 2015, 13:15:46

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Андрей_1

Всем доброго времени суток!
Возникла задача перемещать файл в другую директорию с заменой старого ресурсами Debian.
Ситуация такая:
Есть расшаренная папка, в неё периодически закидываются файлы, и при появлении файла надо его переместить в каталог web-сервера с заменой старого.

vic5710

можно так

#!/bin/sh
SRC=/opt #ваш путь к шаре
DEST=/web #ваш путь в папке сервера
for i in $(ls $SRC)
do
mv $SRC/$i $DEST
done

и через cron проверять


Андрей_1

Спасибо! буду пробовать.
Таким скриптом перемещается файл?
А чтобы было отслеживание наличие файла и при появлении перетаскивалось. cron ведь будет просто периодически запускать этот скрипт. Если не окажется файла в src , то ошибка будет? как добавить в скрипт типа if SRC=/opt #ваш путь к шаре - есть файл, Then перемещаем?

vic5710

#3
переместятся все файлы в каталоге SRC
если каталог пуст ошибки не будет
если надо отслеживать конкретный файл нужна маска файла

#!/bin/sh
SRC=/opt
DEST=/web
cd $SRC
for i in $(ls *.txt) #перемещаем файлы с расширением txt
do
mv $i $DEST
done



endru

данный скрипт будет работать только если в названии файла отсутствуют пробелы.

как альтернатива, можно использовать rsync. файлы сами удаляться не будут в источнике, зато всегда можно проверить какой файл находится в другой директории.
rsync -aru /path/to/share/ /path/to/newdir/

vic5710

#5
Цитата: endru от 18 сентября 2015, 11:41:01данный скрипт будет работать только если в названии файла отсутствуют пробелы.
это решаемо

SRC=/pub
DEST=/opt
TMP=$(mktemp)
cd $SRC
ls *.txt > $TMP
while read line
do
mv "$line" $DEST
done < $TMP
rm $TMP



vic5710

Цитата: ogost от 18 сентября 2015, 13:16:23
действительно, не проще ли rsync?
я не вижу сложностей в скрипте, все однозначно. ТС видней

yura_n

Цитата: vic5710 от 18 сентября 2015, 14:16:28я не вижу сложностей в скрипте
Ну еще бы вы видели сложности в собственном скрипте. ;D

vic5710

Цитата: yura_n от 18 сентября 2015, 14:20:02
Цитата: vic5710 от 18 сентября 2015, 14:16:28я не вижу сложностей в скрипте
Ну еще бы вы видели сложности в собственном скрипте. ;D
а где вы их видите? чисто юниксвэй - все есть файл

Андрей_1

Спасибо всем!
Я не успеваю проштудировать на практике ваши советы.
Вот заинтересовало - rsync -aru /path/to/share/ /path/to/newdir/ . Будут переноситься только файлы или вся папка?
Этот скрипт тоже надо каждый раз запускать или это работает постоянно?

endru

Цитата: Андрей_1 от 18 сентября 2015, 15:32:05Будут переноситься только файлы или вся папка
Не переноситься, а синхронизироваться. Файлы, директории, поддиректории.
Цитата: Андрей_1 от 18 сентября 2015, 15:32:05Этот скрипт тоже надо каждый раз запускать или это работает постоянно?
Запускать либо в ручную, либо по крону.

Андрей_1

#12
Т.е в /share если обновились файлы, то обновит и в другой папке?
А если файлов не окажется? то /path/to/newdir/ тоже очистится?


Cообщение объединено 20 сентября 2015, 11:49:10

Всё попробовал практически, Даже подпапки синхронизирует, здорово!
Сразу возникла новая идея по этой же теме. Приходит диск, подключаю по USB, он монтируется автоматом. И вот мне надо копировать(синхронизировать) в некую /mnt/new, Но как определить как примонтировался USB - диск(путь к нему). Вообще у меня в /media монтируется, а дальше или по метке диска или по номеру!