простой (ish) способ сделать это требует, чтобы у вас был начальный сторожевой файл или существующий архив в вашем каталоге tarball. по сути, это просто устанавливает время начала в качестве основы наших операций tarball:
touch sentinel.tar
Затем, чтобы упаковать файлы, которые вы ищете, просто запустите это в базовом каталоге вашего дерева каталогов:
find . -type f -newer $( ls -1rt *.tar | tail -1 ) \! -name '*.tar' -exec tar cavf "$( date '+%Y%m%d%H%M%S').tar" {} +
это должно привести к появлению тарболов с текущей датой / временем в качестве имени, содержащего все файлы, которые были созданы с момента последнего копирования файлов.
пример:
helter@helter-desktop:~/workspace/tmp$ touch sentinel.tar
helter@helter-desktop:~/workspace/tmp$ ls -la
total 12
drwxr-xr-x 3 helter helter 4096 2011-07-12 16:18 .
drwxr-xr-x 33 helter helter 4096 2011-07-12 15:52 ..
drwxr-xr-x 2 helter helter 4096 2011-07-12 16:17 abc
-rw-r--r-- 1 helter helter 0 2011-07-12 16:18 sentinel.tar
helter@helter-desktop:~/workspace/tmp$ # create some files in the abc sub dir
helter@helter-desktop:~/workspace/tmp$ touch abc/1 abc/2 abc/3
helter@helter-desktop:~/workspace/tmp$ # now tar all the files that were created after our sentinal
helter@helter-desktop:~/workspace/tmp$ find . -type f -newer $( ls -1rt *.tar | tail -1) \! -name '*.tar' -exec tar cavf "$( date '+%Y%m%d%H%M%S').tar" {} +
./abc/3
./abc/1
./abc/2
helter@helter-desktop:~/workspace/tmp$ ls -la
total 16
drwxr-xr-x 3 helter helter 4096 2011-07-12 16:18 .
drwxr-xr-x 33 helter helter 4096 2011-07-12 15:52 ..
-rw-r--r-- 1 helter helter 143 2011-07-12 16:18 20110712161854.tar
drwxr-xr-x 2 helter helter 4096 2011-07-12 16:18 abc
-rw-r--r-- 1 helter helter 0 2011-07-12 16:18 sentinel.tar
helter@helter-desktop:~/workspace/tmp$ # now create some more files
helter@helter-desktop:~/workspace/tmp$ touch abc/4 abc/5 abc/6
helter@helter-desktop:~/workspace/tmp$ # and re-run the command to tar up all the new files
helter@helter-desktop:~/workspace/tmp$ find . -type f -newer $( ls -1rt *.tar | tail -1) \! -name '*.tar' -exec tar cavf "$( date '+%Y%m%d%H%M%S').tar" {} +
./abc/6
./abc/4
./abc/5
helter@helter-desktop:~/workspace/tmp$ ls -la
total 20
drwxr-xr-x 3 helter helter 4096 2011-07-12 16:19 .
drwxr-xr-x 33 helter helter 4096 2011-07-12 15:52 ..
-rw-r--r-- 1 helter helter 143 2011-07-12 16:18 20110712161854.tar
-rw-r--r-- 1 helter helter 142 2011-07-12 16:19 20110712161930.tar
drwxr-xr-x 2 helter helter 4096 2011-07-12 16:19 abc
-rw-r--r-- 1 helter helter 0 2011-07-12 16:18 sentinel.tar
После создания первого архива вы можете удалить файл часового. просто убедитесь, что вы всегда оставляете последний созданный вами tar-файл в корневом каталоге.
Вы можете обойти эти ограничения / допущения с помощью простого сценария bash, если вам не нравится идея сторожевого файла ...