У меня есть несколько каталогов, которые я хочу скопировать в zip-файл с помощью сценария оболочки. Дерево каталогов выглядит так:
testing
|_ source
| |_ fiction_01
| |_ fiction_02
| |_ ...
| |_ images
|
|_ destination
Я хочу только заархивировать каталоги, начиная с того же шаблона, скажем, f*
. Не заинтересован в images
. Полученный почтовый индекс должен быть сохранен в destination
. Из здесь я получаю, как отфильтровать все каталоги, чье имя начинается с f
. Это мой код:
#!/bin/bash
# source and destination directories passed as 1st and 2nd parameters respectively
SRCDIR=$1
DESTDIR=$2
# children directories are those matching f*
CHLDIR=$(find "$SRCDIR" -type d -name "f*")
# name with timestamp for the .zip
BKPNAME=backup-$(date +%-Y%-m%-d)-$(date +%-T).zip
# actual zipping
zip -r $DESTDIR$BKPNAME $SRCDIR$CHLDIR
Сценарий называется backup.sh
и живет в destination
. Вот что я получаю после его запуска:
jm@lenovo410:~/Documents/testing/destination$ bash backup.sh ../source/ ./
adding: ../source/../source/fiction_02/ (stored 0%)
adding: ../source/../source/fiction_02/another.txt (stored 0%)
adding: ../source/fiction_01/ (stored 0%)
adding: ../source/fiction_01/list.txt (stored 0%)
ZIP-файл создается в каталоге destination
. Хотя кажется, что были добавлены и fiction_01
, и fiction_02
(и их содержимое), когда я проверяю, внутри zip есть только каталог fiction_01
.
Вопрос : Как можно Я заархивировал все папки, имя которых соответствует условию f*
?