给定一个基本目录(比如/ home / user)是否有一个可以运行的命令,它会创建一个存档来备份该目录中的所有文本文件(即小于100kb的文件)并且它是子文件?我知道你可以tar / gz一个目录 – 但是排除文件呢?
这个想法是大多数照片,视频和其他大文件都会被忽略,而所有重要的手工文档都可以在项目和服务器周围快速备份.
UPDATE
使用skinp的很棒的代码,我能够备份少量的文件.但是,正如DerfK指出的那样 – 你可以传递给命令的参数大小是有限的.考虑到这一点,我能够写出发现的内容,希望我可以使用一些东西来读取内容到tar并绕过这个限制.另一个选项似乎是一个sh脚本,可以一次将每个文件添加到存档.
find /home/username -type f -size -100k > list.of.small.files.txt
其中呈现了6MB的文件.
解决方法
看看到目前为止发布的其他答案,我担心我看到的xargs和find -exec {}的用法是错误的.如果文件列表长度增长足以使x -gs多次执行tar -c,则填充到该点的tar文件将被覆盖.因此,只有最后一次调用tar的文件才会在tar文件中结束.
无论文件总数如何,无论文件名是否包含嵌入的换行符,这里都应该始终有效:
find /home/user -type f -size -100k -print0 | tar -c -z --null --files-from=- -f backup.tgz
find命令生成要备份的以空值终止的文件名列表,tar命令从管道中读取该列表并创建tarfile backup.tgz.