Xeo*_*oss 3 linux files archive
给定一个基本目录(例如/home/user
),是否有一个可以运行的命令来创建一个存档来备份该目录及其子目录中的所有文本文件(即小于 100kb 的文件)?我知道你可以 tar/gz 一个目录 - 但是排除文件怎么样?
这个想法是,大多数照片、视频和其他大文件将被忽略,而所有重要的手写文档在项目和服务器之间移动时可以轻松快速地备份。
更新
使用 Skinp 的出色代码,我能够备份少量文件。然而,正如 DerfK 指出的那样 - 您可以传递给命令的参数大小是有限的。考虑到这一点,我能够写出内容,find
希望我可以使用某些东西来读取内容tar
并绕过此限制。另一个选项似乎是一个 sh 脚本,可以一次将每个文件添加到存档中。
find /home/username -type f -size -100k > list.of.small.files.txt
Run Code Online (Sandbox Code Playgroud)
生成了一个 6MB 的文件。
看看到目前为止在这里发布的其他答案,我担心我看到的xargs
和 的用途find -exec {}
是错误的。如果文件列表增长到足以tar -c
执行xargs
多次,则填充到该点的 tar 文件将被覆盖。因此,只有最后一次调用的文件tar
才会出现在 tarfile 中。
这是一个应该始终有效的单行代码,无论文件总数如何,也无论文件名是否包含嵌入的换行符:
find /home/user -type f -size -100k -print0 | tar -c -z --null --files-from=- -f backup.tgz
Run Code Online (Sandbox Code Playgroud)
该find
命令生成要备份的以 null 结尾的文件名列表,并且该tar
命令从管道读取该列表并创建 tarfile backup.tgz
。
归档时间: |
|
查看次数: |
449 次 |
最近记录: |