标签: 7z

scp 和 compress 同时进行,无需中间保存

什么是规范的方式:

  • scp 一个文件到远程位置
  • 压缩传输中的文件(tar或不压缩,单个文件或整个文件夹,7za或者其他更有效的东西)
  • 在不保存中间文件的情况下执行上述操作

我熟悉这样的壳管:

tar cf - MyBackups | 7za a -si -mx=9 -ms=on MyBackups.tar.7z
Run Code Online (Sandbox Code Playgroud)

本质上:

  • 将整个文件夹滚动到一个 tar
  • 将数据传递stdoutstdin压缩程序
  • 应用积极压缩

通过ssh链接执行此操作的最佳方法是什么,文件登陆远程文件系统?


我宁愿不sshfs安装。


这行不通:

scp <(tar cvf - MyBackups | 7za a -si -mx=9 -so) localhost:/tmp/tmp.tar.7z
Run Code Online (Sandbox Code Playgroud)

因为:

/dev/fd/63: not a regular file
Run Code Online (Sandbox Code Playgroud)

ssh scp tar 7z

74
推荐指数
3
解决办法
15万
查看次数

如何使用7z通过管道压缩?

我正在使用它来安全地创建备份(? - 它真的安全吗?有一个好的密码吗?):

# ENCRYPT
ORIGDIR="DIRECTORYNAMEHERE"; tar cvf - "${ORIGDIR}/" 2>/dev/null | gzip -9 - 2>/dev/null | openssl aes-256-cbc -salt -out "${ORIGDIR}.tar.gz.aes"

# DECRYPT
openssl aes-256-cbc -d -salt -in "ENCDIRECTORYNAMEHERE" | tar -xz -f -
Run Code Online (Sandbox Code Playgroud)

问:但是如何使用具有最大压缩率的 7z 来做到这一点?

除了唯一的 OUTPUT 文件之外创建临时文件并不好,因为如果我需要在 180 GByte FS 上压缩 ~100 GByte 大小的文件/目录,我将没有足够的可用空间(如果例如:压缩文件将需要 ~60字节)。

7z

19
推荐指数
4
解决办法
2万
查看次数

递归查找各种存档格式的所有存档文件并搜索它们的文件名模式

充其量我想要这样的电话:

$searchtool /path/to/search/ -contained-file-name "*vacation*jpg"
Run Code Online (Sandbox Code Playgroud)

...这样这个工具

  • 对给定路径进行递归扫描
  • 获取所有支持存档格式的文件,这些文件至少应该是“最常见的”,如 zip、rar、7z、tar.bz、tar.gz ...
  • 并扫描存档的文件列表以查找有问题的名称模式(此处*vacation*jpg

我知道如何使用查找工具、tar、unzip 等。我可以将这些与 shell 脚本结合起来,但我正在寻找一个简单的解决方案,它可能是单行 shell 或专用工具(欢迎提供 GUI 工具的提示,但我的解决方案必须基于命令行)。

tar find zip 7z rar

14
推荐指数
2
解决办法
8671
查看次数

如何使用 7z 将目录中的所有文件和目录(包括隐藏的)归档?

由于我的存档需求的特殊性,我对固定的 tar.gz 存档不满意,而是使用 7z。

我使用以下命令来执行此操作:

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*
Run Code Online (Sandbox Code Playgroud)

要创造一切内部的档案~/my/folder/~/my/folder.7z文件。

但是~/my/folder/.hiddenFolder没有进入档案。如何解决这个问题?不*应该返回所有文件和文件夹吗?

bash wildcards 7z

10
推荐指数
3
解决办法
2万
查看次数

将文件添加到 zip 文件中的不同路径

我有一个放在以下目录中的文件:

folder_A/another_folder_A/file_to_add.xml
Run Code Online (Sandbox Code Playgroud)

现在,我想要做的只是将文件添加到现有 zip 存档中的文件夹中。

例如,这是我的 zip 内容:

my_zip.zip/folder_B/another_folder_B
Run Code Online (Sandbox Code Playgroud)

我怎样才能将file_to_add.xml加到another_folder_B

my_zip.zip/folder_B/another_folder_B/file_to_add.xml
Run Code Online (Sandbox Code Playgroud)

我不想创建具有相同名称的文件夹并添加它们。有没有允许我这样做的命令?

zip 7z

9
推荐指数
1
解决办法
6792
查看次数

如何为 7z 指定字符编码?

7z x档案给了我

'20 ª.1 ¯® '$'\302\212''¨à®¢®£à ¤áª ï ã«.rtf'  IMG_6527.JPG
''$'\302\212''¨à®¢®£à ¤áª ï, ¨áâ.doc'          IMG_6532.JPG
''$'\302\204''®¯  ᮣ« è¥­¨¥(3).doc'           IMG_6542.JPG
''$'\302\204\302\212\302\217''.doc'        IMG_6543.JPG IMG_6526.JPG
Run Code Online (Sandbox Code Playgroud)

很明显,有些文件的编码方式不同,7z默认情况下不会转换为 UTF-8。如何告诉7z做转换?

我为字符集找到的唯一选项:

-scc{UTF-8|WIN|DOS}:为控制台输入/输出
-scs{UTF-8|UTF-16LE|UTF-16BE|WIN|DOS|{id}}设置字符集:为列表文件设置字符集

WIN, DOS,UTF-8不工作。当试图通过猜测字符集时

7z -scsCP1251 l 26-08-2016_10-18-14.zip
Run Code Online (Sandbox Code Playgroud)

7z 给出警告:

Unsupported charset: cp1251
Run Code Online (Sandbox Code Playgroud)

unzip 这样做是否正确(西里尔符号已转换):

'20 ?.1 ?? ?????????????? ??.rtf'  IMG_6532.JPG  '???  ??????????(3).doc'
26-08-2016_10-18-14.zip        IMG_6542.JPG  '??????????????, ???.doc'
IMG_6526.JPG               IMG_6543.JPG
IMG_6527.JPG               ???.doc
Run Code Online (Sandbox Code Playgroud)

补充资料

locale 7z

8
推荐指数
1
解决办法
2万
查看次数

使用 7-Zip 从存档中提取特定文件

我运行 Linux Live CD,我需要从位于磁盘驱动器上的 wim-archive 中提取特定文件。我知道存档中文件的完整路径:

xubuntu@xubuntu:~$ 7z l winRE.wim | grep -i bootrec.exe
2009-08-28 15:02:29 ....A       299008       134388  Windows/System32/BootRec.exe
Run Code Online (Sandbox Code Playgroud)

我的磁盘空间不足,无法解压整个存档。

如何从存档中提取该特定文件?

我尝试了该-i选项,但这不起作用:

xubuntu@xubuntu:~$ 7z x -i Windows/System32/BootRec.exe winRE.wim 


Error:
Incorrect command line
Run Code Online (Sandbox Code Playgroud)

linux 7z files p7zip

8
推荐指数
1
解决办法
6960
查看次数

如何使用 7-zip 命令行工具膨胀和提取 .tar.bz2

我有一个 .tar.bz2 文件,我想通过 7-zip 命令行工具对其进行解压缩和提取。

所以基本上我正在寻找相当于

tar -xjf foo.tar.bz2
Run Code Online (Sandbox Code Playgroud)

使用 7-zip 时,只有选项 "x" 用于提取,所以这样做

7z x foo.tar.bz2
Run Code Online (Sandbox Code Playgroud)

给我膨胀的 foo.tar 文件,而不是解压 tar 中的所有目录。7z对应的选项是什么?

tar 7z

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

使用 7-Zip 保留存档中的文件权限和符号链接

我有一个test包含三个文件的目录ls -l test

total 8
-rw-r--r-- 1 mb mb 16 Jul 25 11:12 regular_file
-rwxr-xr-x 1 mb mb 19 Jul 25 11:02 script.sh
lrwxrwxrwx 1 mb mb 12 Jul 25 11:14 symlink -> regular_file
Run Code Online (Sandbox Code Playgroud)

它包含一个常规文件、一个符号链接和一个可执行脚本。

使用 归档此目录后tar -czf test.tgz test/,我想使用 7-Zip 提取三个文件:

7z x -tgzip test.tgz && 7z x -ttar test.tar
Run Code Online (Sandbox Code Playgroud)

不幸的是,7-Zip 不会生成原始文件:该脚本丢失了其可执行位,symlink不再是符号链接,而是包含文本的文件regular_file

total 12
-rw-r--r-- 1 mb mb 16 Jul 25 11:12 regular_file
-rw-r--r-- 1 mb mb 19 Jul …
Run Code Online (Sandbox Code Playgroud)

executable symlink 7z

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

如何通过管道使用 7z 压缩 mysql 转储?

我一直在尝试使用管道运算符通过 7z 压缩我的 mysqldump 输出(我见过这个问题,但它的答案使用 xz 而不是 7z)。这是我迄今为止尝试过的:

mysqldump -u root -p Linux_Wiki | 7z > backup.sql.7z
Run Code Online (Sandbox Code Playgroud)

和:

mysqldump -u root -p Linux_Wiki | 7za > backup.sql.7z
Run Code Online (Sandbox Code Playgroud)

和:

mysqldump -u root -p Linux_Wiki | '7za a' > backup.sql.7z
Run Code Online (Sandbox Code Playgroud)

和:

mysqldump -u root -p Linux_Wiki | `7za a` > backup.sql.7z
Run Code Online (Sandbox Code Playgroud)

所有四个都失败了,但我确信我已经p7zip安装了,在最后一次尝试给出了这个输出之后:

Enter password: bash: 7-Zip: command not found
mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect
Run Code Online (Sandbox Code Playgroud)

command-line mysql 7z dump

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

标签 统计

7z ×10

tar ×3

zip ×2

bash ×1

command-line ×1

dump ×1

executable ×1

files ×1

find ×1

linux ×1

locale ×1

mysql ×1

p7zip ×1

rar ×1

scp ×1

ssh ×1

symlink ×1

wildcards ×1