Автор Тема: Перемещение файлов  (Прочитано 2599 раз)

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

Оффлайн Андрей_1

  • Местный житель
  • ***
  • Сообщений: 194
Перемещение файлов
« : 17 Сентября 2015, 13:15:46 »
Всем доброго времени суток!
Возникла задача перемещать файл в другую директорию с заменой старого ресурсами Debian.
Ситуация такая:
Есть расшаренная папка, в неё периодически закидываются файлы, и при появлении файла надо его переместить в каталог web-сервера с заменой старого.
 

Оффлайн vic5710

Re: Перемещение файлов
« Ответ #1 : 17 Сентября 2015, 15:41:21 »
можно так
#!/bin/sh
SRC=/opt #ваш путь к шаре
DEST=/web #ваш путь в папке сервера
for i in $(ls $SRC)
do
 mv $SRC/$i $DEST
done
и через cron проверять

 

Оффлайн Андрей_1

  • Местный житель
  • ***
  • Сообщений: 194
Re: Перемещение файлов
« Ответ #2 : 18 Сентября 2015, 07:27:19 »
Спасибо! буду пробовать.
Таким скриптом перемещается файл?
А чтобы было отслеживание наличие файла и при появлении перетаскивалось. cron ведь будет просто периодически запускать этот скрипт. Если не окажется файла в src , то ошибка будет? как добавить в скрипт типа if SRC=/opt #ваш путь к шаре - есть файл, Then перемещаем?
 

Оффлайн vic5710

Re: Перемещение файлов
« Ответ #3 : 18 Сентября 2015, 10:52:15 »
переместятся все файлы в каталоге SRC
если каталог пуст ошибки не будет
если надо отслеживать конкретный файл нужна маска файла
#!/bin/sh
SRC=/opt
DEST=/web
cd $SRC
for i in $(ls *.txt) #перемещаем файлы с расширением txt
do
 mv $i $DEST
done

« Последнее редактирование: 18 Сентября 2015, 11:36:35 от vic5710 »
 

Оффлайн endru

Re: Перемещение файлов
« Ответ #4 : 18 Сентября 2015, 11:41:01 »
данный скрипт будет работать только если в названии файла отсутствуют пробелы.

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

Оффлайн vic5710

Re: Перемещение файлов
« Ответ #5 : 18 Сентября 2015, 12:41:24 »
данный скрипт будет работать только если в названии файла отсутствуют пробелы.
это решаемо
SRC=/pub
DEST=/opt
TMP=$(mktemp)
cd $SRC
ls *.txt > $TMP
while read line
do
 mv "$line" $DEST
done < $TMP
rm $TMP
« Последнее редактирование: 18 Сентября 2015, 12:50:32 от vic5710 »
 

Оффлайн ogost

Re: Перемещение файлов
« Ответ #6 : 18 Сентября 2015, 13:16:23 »
действительно, не проще ли rsync?

Оффлайн vic5710

Re: Перемещение файлов
« Ответ #7 : 18 Сентября 2015, 14:16:28 »
действительно, не проще ли rsync?
я не вижу сложностей в скрипте, все однозначно. ТС видней
 

yura_n

  • Гость
Re: Перемещение файлов
« Ответ #8 : 18 Сентября 2015, 14:20:02 »
я не вижу сложностей в скрипте
Ну еще бы вы видели сложности в собственном скрипте. ;D
 

Оффлайн vic5710

Re: Перемещение файлов
« Ответ #9 : 18 Сентября 2015, 14:40:36 »
я не вижу сложностей в скрипте
Ну еще бы вы видели сложности в собственном скрипте. ;D
а где вы их видите? чисто юниксвэй - все есть файл
 

Оффлайн Андрей_1

  • Местный житель
  • ***
  • Сообщений: 194
Re: Перемещение файлов
« Ответ #10 : 18 Сентября 2015, 15:32:05 »
Спасибо всем!
Я не успеваю проштудировать на практике ваши советы.
Вот заинтересовало - rsync -aru /path/to/share/ /path/to/newdir/ . Будут переноситься только файлы или вся папка?
Этот скрипт тоже надо каждый раз запускать или это работает постоянно?
 

Оффлайн endru

Re: Перемещение файлов
« Ответ #11 : 19 Сентября 2015, 08:55:11 »
Будут переноситься только файлы или вся папка
Не переноситься, а синхронизироваться. Файлы, директории, поддиректории.
Этот скрипт тоже надо каждый раз запускать или это работает постоянно?
Запускать либо в ручную, либо по крону.

Оффлайн Андрей_1

  • Местный житель
  • ***
  • Сообщений: 194
Re: Перемещение файлов
« Ответ #12 : 20 Сентября 2015, 11:21:37 »
Т.е в /share если обновились файлы, то обновит и в другой папке?
А если файлов не окажется? то /path/to/newdir/ тоже очистится?


Cообщение объединено 20 Сентября 2015, 11:49:10
Всё попробовал практически, Даже подпапки синхронизирует, здорово!
Сразу возникла новая идея по этой же теме. Приходит диск, подключаю по USB, он монтируется автоматом. И вот мне надо копировать(синхронизировать) в некую /mnt/new, Но как определить как примонтировался USB - диск(путь к нему). Вообще у меня в /media монтируется, а дальше или по метке диска или по номеру!
« Последнее редактирование: 20 Сентября 2015, 11:49:10 от Андрей_1 »
 

Теги: