Используя простые шарики POSIX:
ls -d -- [0-9].txt *[!0-9][0-9].txt
Насколько я знаю, что rsync не имеет той возможности. Я не рекомендовал бы распаковать прежде, чем передать файлы, если Ваш клиент не является действительно медленным по сравнению с дополнительным сетевым временем трансфера прежде, чем сделать распаковку.
Если Вы в программирование лучшего совета, я могу дать, должен смотреть на rdiff-backup
, который является основанной на Python программой сверху libsync1
библиотека. Необходимо смочь зависнуть в тесте и распаковке на каждом файле, переданном там.
Это кажется вероятным маршрутом для ловли данных прежде чем быть записанным. И это было бы быстрее, чем наблюдение процесса rsync
вывод и пытающийся распаковать, что было просто передано и уже записано в диск.
Я не могу думать о простом способе усилить rsync и выполнить распаковку. Можно сделать распаковку через пользовательскую предварительно загруженную библиотеку или пользовательскую файловую систему FUSE (на удаленной стороне, стороне с gzipped файлами), но это было бы большой работой.
Если можно предположить, что метка времени сжатого файла соответствует метке времени gzipped файла, и приемлемо передать целые файлы в случае модификации, то Вы не должны усиливать возможности инкрементного обновления rsync. То же идет, если файлы никогда не изменяются после того, как они создаются.
Первое препятствие - то, что это - удаленная копия. Устраните проблему путем монтирования удаленного каталога с SSHFS так, чтобы это было доступно как локальная файловая система.
Теперь можно использовать find
для пересечения дерева каталогов создайте каталоги по мере необходимости и gzip файлы на лету.
mkdir server1
sshfs test@server1:/var/www/html/reports server1
cd server1
find . \( -type d -o -type f -name .gz \) -exec sh -c '
for x; do
if [ -d "$x" ]; then
[ -d "$0/$x" ] || mkdir "$0/$x"
else
zcat "$x" >"$0/$x"
touch -r "$x" "$0/$x"
fi
done
' /home/myself/reports {} +