标签: tar

与 macOS tar 相比,为什么使用 Python 的 tar 库时 tar.xz 文件要小 15 倍?

语境

我正在压缩大约 1.3 GB 的文件夹,每个文件夹都包含 1440 个 JSON 文件,发现在 macOS 或Raspbian 10 (Buster)上使用tar命令和 Python 的内置tarfile库之间存在 15 倍的差异

最小工作示例

此脚本比较了两种方法:

#!/usr/bin/env python3

from pathlib import Path
from subprocess import call
import tarfile

fullpath = Path("/Users/user/Desktop/temp/tar/2021-03-11")
zsh_out = Path(fullpath.parent, "zsh-archive.tar.xz")
py_out = Path(fullpath.parent, "py-archive.tar.xz")

# tar using terminal
# tar cJf zsh-archive.tar.xz folderpath
call(["tar", "cJf", zsh_out, fullpath])

# tar using tarfile library
with tarfile.open(py_out, "w:xz") as tar:
    tar.add(fullpath, arcname=fullpath.stem)

# Print filesizes
print(f"zsh tar filesize: {round(Path(zsh_out).stat().st_size/(1024*1024), 2)} …
Run Code Online (Sandbox Code Playgroud)

compression zsh python tar macos

240
推荐指数
2
解决办法
6万
查看次数

今天使用'tar'有什么好处?

我知道当时tar是为磁带存档制作的,但今天我们有存档文件格式,既可以聚合文件,又可以在相同的逻辑文件格式中执行压缩。

问题:

  • 与使用在同一数据结构中进行聚合和压缩的文件格式相比,在聚合/压缩/解压缩阶段使用tar封装在gzip或 中是否存在性能损失bzip2?假设被比较的压缩器的运行时间是相同的(例如 gzip 和 Deflate 是相似的)。

  • tar文件格式是否具有其他文件格式(例如.7z.zip不具有)的功能?

  • 既然tar是这样的旧文件格式,以及较新的文件格式存在的今天,为什么tar(无论是封装gzipbzip2甚至是新的xz),今天仍然如此广泛的使用在GNU / Linux,Android的,BSD和其他类似UNIX操作系统,文件传输、程序源和二进制下载,有时甚至作为包管理器格式?

linux unix tar archiving

216
推荐指数
11
解决办法
4万
查看次数

使用 tar -zcvf 时如何指定压缩级别?

我在工作中经常使用 gzip 目录。我通常做的是

tar -zcvf file.tar.gz /path/to/directory
Run Code Online (Sandbox Code Playgroud)

有没有办法在这里指定压缩级别?即使压缩需要更多时间,我也想尽可能使用最佳压缩。

linux compression gzip tar

183
推荐指数
6
解决办法
22万
查看次数

Linux Bash 脚本,单个命令但多行?

我通过搜索 Google 编写了以下脚本,它将我的 Linux 系统备份到存档:

#!/bin/bash
# init

DATE=$(date +20%y%m%d)

tar -cvpzf /share/Recovery/Snapshots/$HOSTNAME_$DATE.tar.gz --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev --exclude=/share/Archive /
Run Code Online (Sandbox Code Playgroud)

这有效,但我想知道我是否可以格式化脚本以在多行上显示命令,类似于这样,以便以后轻松编辑:

tar -cvpzf /share/Recovery/Snapshots/$HOSTNAME_$DATE.tar.gz 
--exclude=/proc 
--exclude=/lost+found 
--exclude=/sys 
--exclude=/mnt 
--exclude=/media 
--exclude=/dev 
--exclude=/share/Archive 
/
Run Code Online (Sandbox Code Playgroud)

这样以后阅读和编辑就更容易了。是否可以通过这种方式格式化 Bash 脚本?

linux script bash tar

179
推荐指数
4
解决办法
28万
查看次数

有没有办法查看每个文件的任何 tar 进度?

我有几个要压缩的大文件。例如,我可以这样做

tar cvfj big-files.tar.bz2 folder-with-big-files
Run Code Online (Sandbox Code Playgroud)

问题是我看不到任何进展,所以我不知道需要多长时间或类似的事情。使用v我至少可以看到每个文件何时完成,但是当文件很少而且很大时,这不是最有帮助的。

有没有办法让 tar 显示更详细的进度?比如完成的百分比或进度条或估计的剩余时间等等。对于每个文件或所有文件或两者。

unix tar progress

162
推荐指数
7
解决办法
18万
查看次数

如何在命令行上密码保护 gzip 文件?

我想在 Ubuntu 10.04 上使用 tar 命令创建一些 tar.gz(可能还有 tar.bz2)文件。

我想用密码保护文件。

执行此操作的命令是什么(我在谷歌上搜索过,但没有发现任何显示如何使用密码创建和提取压缩文件的内容)。

任何人都知道如何做到这一点?

security gzip tar bzip2 ubuntu

156
推荐指数
6
解决办法
24万
查看次数

如何将 tar gz 存档解压缩到特定目的地?

我想将.tar.gz文件解压缩到特定目录。

存档文件位于/root/Documents. 我想把它解压到/root/Desktop/folder. 压缩文件中的文件夹结构应保留在目标目录中。

linux gzip tar

132
推荐指数
1
解决办法
23万
查看次数

创建具有多个目录和文件位置的 tar

我有一些位于不同位置的脚本和文件,例如:

  • /etc/dir1
  • /var/www/html
  • /home/somedir

我想制作一个 tar 文件,以便它复制具有位置结构的文件和文件夹。当我解压到另一个位置时,所有文件都将被复制到正确路径中各自的位置;与制作 tar 的地方相同。

linux centos tar

129
推荐指数
2
解决办法
23万
查看次数

Linux / OS X tar 不兼容 – 在 OS X 上创建的 tarball 在 Linux 中解压时会出错

当我在 Macbook 上压缩文件并在 Linux 中解压缩它们时,我反复收到以下警告/错误:


 tar: Ignoring unknown extended header keyword `SCHILY.ino'
 tar: Ignoring unknown extended header keyword `SCHILY.nlink'
 tar: Ignoring unknown extended header keyword `SCHILY.dev'
 tar: Ignoring unknown extended header keyword `SCHILY.ino'
 tar: Ignoring unknown extended header keyword `SCHILY.nlink'
 tar: Ignoring unknown extended header keyword `SCHILY.dev'
 tar: Ignoring unknown extended header keyword `SCHILY.ino'
 tar: Ignoring unknown extended header keyword `SCHILY.nlink'
 tar: Ignoring unknown extended header keyword `SCHILY.dev'
 tar: Ignoring unknown extended header keyword `SCHILY.ino'
 tar: Ignoring unknown extended header …
Run Code Online (Sandbox Code Playgroud)

linux command-line tar macos

113
推荐指数
5
解决办法
5万
查看次数

如何一步解压缩 .tar.gz(使用 7-Zip)?

我在 Windows XP 上使用 7-Zip,每当我下载 .tar.gz 文件时,我都需要两个步骤才能完全解压缩文件。

  1. 我右键单击该example.tar.gz文件并从上下文菜单中选择7-Zip --> Extract Here
  2. 然后我获取生成的example.tar文件并再次右键单击并从上下文菜单中选择7-Zip --> Extract Here

有没有办法通过上下文菜单一步完成此操作?

windows tar 7-zip

109
推荐指数
5
解决办法
19万
查看次数

标签 统计

tar ×10

linux ×6

gzip ×3

compression ×2

macos ×2

unix ×2

7-zip ×1

archiving ×1

bash ×1

bzip2 ×1

centos ×1

command-line ×1

progress ×1

python ×1

script ×1

security ×1

ubuntu ×1

windows ×1

zsh ×1