我有一个 URL,它指向一个很大的 tar 文件,大约 200gb,我需要在我的 Linux 系统中提取该文件的一个文件夹。由于文件很大,我不想将整个文件下载到我的 Linux 系统。而且我没有源系统的 shh 访问权限。
有什么办法可以仅提取 tar.gz 文件的一小部分?
答案1
要仅提取特定目录,您需要知道确切的文件名。通配符不适用于 tar。命令将如下所示
curl -s -o - <URL>|tar xz /path/file1 /path/file2 ...
答案2
该tar
格式不允许直接寻址文件(或目录) - 这是因为吨猿应收账韭菜需要从备份介质中按顺序读取。
当然,你可以做的是,在提取相关部分后停止该过程。你可以这样做
curl -o - 'http://your/url' | tar -xvz your_filter
这将从头开始下载文件并提取相关部分,一旦拥有所需的一切,您可以停止该过程以避免下载其余部分。
根据您对源服务器的访问类型,您甚至可以做得更好:您的 PHP 是否没有保存模式?如果是,您可以通过shell_exec
和朋友提取所需的内容。