uma maneira simples (ish) de fazer isso requer que você tenha um arquivo sentinela inicial ou um tarball existente em seu diretório tarball. essencialmente isso apenas define a hora de início como base de nossas operações de tarball:
touch sentinel.tar
Em seguida, para distribuir os arquivos que você está procurando, basta executar isso no diretório base de sua árvore de diretórios:
find . -type f -newer $( ls -1rt *.tar | tail -1 ) \! -name '*.tar' -exec tar cavf "$( date '+%Y%m%d%H%M%S').tar" {} +
isso deve resultar em tarballs com a data / hora atual como o nome que contém todos os arquivos que foram criados desde a última vez que os arquivos foram encerrados.
exemplo:
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
depois que o primeiro tarball for criado, você poderá remover o arquivo sentinela. apenas certifique-se de sempre deixar o último arquivo tar que você criou no diretório raiz.
você pode contornar essas limitações / suposições com algum simples script de bash, se você não gosta da idéia de um arquivo sentinela ...