LINUX.ORG.RU
ФорумAdmin

Отыскать нужные файлы и папки и сделать их копию на внешний диск с сохранением файловой структуры

 , ,


2

4

Ребята помогите

Задача очень срочная:

У нас есть большое файлохранилище. Нужно в нем отыскать все файлы и папки что содержат в названии слово Tips (причем в любом регистре букв), также найти все файлы с расширением tps или tps~. И самое главное мне нужно переместить эти файлы и папки на внешний диск смонтированный скажем в /media/hdd , но при этом сохранить полную структуру каталогов где они лежат, чтобы потом легко было вернуть их на место.

Подскажите, может какой скриптик или команду. Очень нужно.

Ответ на: комментарий от WRG

Если заходить с этой стороны, то надо, до кучи, навалить dirname и mkdir -p. А потом все это сверху обильно обмазать parallel.

silw ★★★★★
()
Ответ на: комментарий от anonymous

Ребята мне не просто их найти нужно, мне нужно.

Понятно что можно через find их найти и просто слить на флешку.

Мне нужно их не просто слить на флешку, а создать точную файловую структуру на внешнем диске.

Т.е. к примеру, на сервере файл лежит по адресу /mnt/Storage/Projects/Some Project/file.tps

Соответственно мне нужно чтобы на внешнем диске файл сохранился по адресу: /media/hdd/Projects/Some Project/file.tps

И т.д.

ITdreamer
() автор топика
Ответ на: комментарий от ITdreamer

Тебе же все уже сказали.

Если на скорую руку, то можно так:

silwer@xwing ~ $ cat copy_hierarchy.sh 
#!/bin/bash
set -e # -x

WHAT=${1}
WHERE=${2}

DIRNAME=$(dirname ${1})
NEWPATH=${WHERE}/${DIRNAME}

mkdir -p ${NEWPATH}
cp -a ${1} ${NEWPATH}/. 

exit $?

silwer@xwing ~ $ find / -iname «*tips*» -exec ./copy_hierarchy.sh {} /new/path \;

silw ★★★★★
()
Последнее исправление: silw (всего исправлений: 2)
Ответ на: комментарий от ITdreamer

В следующий раз кастуйте меня в JOB до обеда, $200 и за час я накидаю скриптик.
А сейчас уже поздно, мне пора уезжать по своим делам.

Goury ★★★★★
()
Ответ на: комментарий от mix_mix

Не знал, что cpio так умеет. Спасибо.

silw ★★★★★
()
Ответ на: комментарий от silw

Окай, BSD мне тоже покатит.
И в случае чего запроприетарить проще будет.

Goury ★★★★★
()
Ответ на: комментарий от silw

mkdir -p ${NEWPATH}

Вот это не гуд, права будут от того кто запустил, а не те которые были.
Выше уже про rsync написали, это правильнее... и самое главное проще, одной командой можно решить.

anc ★★★★★
()
Ответ на: комментарий от ITdreamer

Я погорячился насчет одной командой. Лучше все-таки использовать вместе с find.
А так, что-то типа:

rsync -am -f '+ */' -f '+ *[tT][iI][pP][sS]*/**' -f '+ *.tps' -f '+ *.tps~' -f '- *'
эта команда, не скопирует пустые каталоги.

anc ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.