URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10122
[ Назад ]

Исходное сообщение
"bash-скриптинг"

Отправлено Hogward , 30-Сен-16 14:23 
Входная информация:
Есть каталог (пример) /home/usr/var/ в котором лежит 300 файлов. Периодически возникает необходимость обновлять эти файлы, создав бэкапы старых. Хочу автоматизировать сей нудный процесс до нажатия одной кнопки. Таким образом у меня есть список файлов list.txt в котором указаны интересующие меня файлы (количество любое, файл заполняется через ls). На основании этого файла хочу выбрать существующие файлы из /home/usr/var/, скопировать их в /home/usr/var_old/, после чего подменить на новые. Перерыл кучу информации, нашел несколько работающих вариантов в случаях, когда есть полный путь до файлов, но так и не понял, как написать запрос поиска файлов на основании их имен в текстовом документе. Поиск осуществляется именно через текстовый документ, т.к. он формируется на удаленном сервере, после чего доставляется на необходимый.
PS из плюсов - все файлы имеют вид "document"; "item" и пр. Без пробелов, спецсимволов и расширений.

Копирование файлов планирую осуществлять вот таким образом:
cat /home/usr/var/to_backup.txt | xargs -IFILE cp FILE  /home/usr/var_old/
где to_backup.txt - файл, созданный на основе list.txt, но с полными путями до файлов.

Почти уверен, что проблему можно решить обычным find-ом, но не хватает скила правильно это сделать.


Содержание

Сообщения в этом обсуждении
"bash-скриптинг"
Отправлено Виктор , 30-Сен-16 23:27 
>[оверквотинг удален]
> осуществляется именно через текстовый документ, т.к. он формируется на удаленном сервере,
> после чего доставляется на необходимый.
> PS из плюсов - все файлы имеют вид "document"; "item" и пр.
> Без пробелов, спецсимволов и расширений.
> Копирование файлов планирую осуществлять вот таким образом:
> cat /home/usr/var/to_backup.txt | xargs -IFILE cp FILE  /home/usr/var_old/
> где to_backup.txt - файл, созданный на основе list.txt, но с полными путями
> до файлов.
> Почти уверен, что проблему можно решить обычным find-ом, но не хватает скила
> правильно это сделать.

while read f; do
  echo $f
done <list.txt


"bash-скриптинг"
Отправлено Hogward , 03-Окт-16 11:35 
>[оверквотинг удален]
>> Без пробелов, спецсимволов и расширений.
>> Копирование файлов планирую осуществлять вот таким образом:
>> cat /home/usr/var/to_backup.txt | xargs -IFILE cp FILE  /home/usr/var_old/
>> где to_backup.txt - файл, созданный на основе list.txt, но с полными путями
>> до файлов.
>> Почти уверен, что проблему можно решить обычным find-ом, но не хватает скила
>> правильно это сделать.
> while read f; do
>   echo $f
> done <list.txt

Спасибо, разобрался с циклом и все заработало.


"bash-скриптинг"
Отправлено Pahanivo , 03-Окт-16 11:03 
причем тут find, когда, как ты сам пишешь, тебе известны их имена и пути ... остается только проверить их существование ...
попытайся сформулировать задачу хотя бы для себя - глядишь и сам разберешься.

"bash-скриптинг"
Отправлено Hogward , 03-Окт-16 11:39 
> причем тут find, когда, как ты сам пишешь, тебе известны их имена
> и пути ... остается только проверить их существование ...
> попытайся сформулировать задачу хотя бы для себя - глядишь и сам разберешься.

Это часть более сложного сценария. Путь динамически меняется от сервера к серверу. Предложенный выше вариант позволил решить задачу, отказавшись от создания еще одного текстового файла.