Merge pull request #43 from LCTT/master

update 2017-05-10
This commit is contained in:
cinlen_0x05 2017-05-10 23:01:22 +08:00 committed by GitHub
commit 72c2df819f
8 changed files with 301 additions and 2206 deletions

View File

@ -1,20 +1,20 @@
rdiff-backup - 一个 Linux 中的远程增量备份工具
rdiff-backup一个 Linux 中的远程增量备份工具
============================================================
rdiff-backup 是用于本地/远程增量备份的强大且易于使用的 Python 脚本,它适用于任何 POSIX 操作系统如Linux、Mac OS X 或 [Cygwin][1]。它集合了镜像和增量备份的显著特性。
rdiff-backup 是一个用于本地/远程增量备份的强大而易用的 Python 脚本,它适用于任何 POSIX 操作系统如Linux、Mac OS X 或 [Cygwin][1]。它集合了镜像和增量备份的显著特性。
值得注意的是它保留了子目录、dev文件、硬链接和关键的文件属性如权限、uid/gid 所有权、修改时间、扩展属性、acls 以及 resource fork。它可以通过管道以高效带宽的模式工作这与流行的[ rsync 备份工具][2]类似。
值得注意的是它保留了子目录、dev 文件、硬链接,以及关键的文件属性如权限、uid/gid 所有权、修改时间、扩展属性、acl 以及 resource fork。它可以通过管道以高效带宽的模式工作这与流行的 [rsync 备份工具][2]类似。
rdiff-backup 通过使用 SSH 将单个目录备份到另一个目录,这意味着数据传输被加密并且是安全的。目标目录(在远程系统上)最终会得到源目录的完整副本,但是额外的反向差异存储在目标目录的特殊子目录中,从而可以恢复前一段时间丢失的文件。
rdiff-backup 通过使用 SSH 将单个目录备份到另一个目录,这意味着数据传输被加密并且是安全的。目标目录(在远程系统上)最终会得到源目录的完整副本,但是此外的反向差异会存储在目标目录的特殊子目录中,从而可以恢复前一段时间丢失的文件。
#### 依赖
### 依赖
要在 Linux 中使用 rdiff-backup你需要在系统上安装以下软件包
* Python v2.2 或更高版本
* librsync v0.9.7 或更高版本
* pylibacl 和 pyxattr Python 模块是可选的,但它们分别是 POSIX 访问控制列表ACL和扩展属性支持必需的。
* rdiff-backup-statistics 需要 Python v2.4 或更高版本。
* Python v2.2 或更高版本
* librsync v0.9.7 或更高版本
* pylibacl 和 pyxattr Python 模块是可选的,但它们分别是 POSIX 访问控制列表ACL和扩展属性支持必需的。
* rdiff-backup-statistics 需要 Python v2.4 或更高版本。
### 如何在 Linux 中安装 rdiff-backup
@ -58,11 +58,11 @@ $ sudo apt-get install librsync-dev rdiff-backup
但是,要自动执行诸如脚本等自动备份之类的任务,那么你需要配置[使用 SSH 密钥无密码登录 SSH][3],因为 SSH 密钥增加了两台 Linux服务器之间的信任来[简化文件同步或传输][4]。
在你设置了[ SSH 无密码登录][5]后,你可以使用下面的例子开始使用该脚本。
在你设置了 [SSH 无密码登录][5]后,你可以使用下面的例子开始使用该脚本。
#### 备份文件到不同分区
下面的例子会备份 `/etc` 文件夹到另外一个分区的 Backup 文件夹内:
下面的例子会备份 `/etc` 文件夹到另外一个分区的 `Backup` 文件夹内:
```
$ sudo rdiff-backup /etc /media/aaronkilik/Data/Backup/mint_etc.backup
@ -71,7 +71,7 @@ $ sudo rdiff-backup /etc /media/aaronkilik/Data/Backup/mint_etc.backup
![Backup Files to Different Partition](http://www.tecmint.com/wp-content/uploads/2017/03/Backup-Files-to-Different-Partition.png)
][6]
备份文件到不同分区
*备份文件到不同分区*
要排除一个特定文件夹和它的子目录,你可以如下使用 `--exclude` 选项:
@ -85,7 +85,7 @@ $ sudo rdiff-backup --exclude /etc/cockpit --exclude /etc/bluetooth /media/aaron
$ sudo rdiff-backup --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup
```
还有另外两个重要标志来用于选择文件,`--max-file-size` 用来排除大于给定字节大小的文件,`--max-file-size` 用于排除小于给定字节大小的文件:
还有另外两个重要标志来用于选择文件,`--max-file-size` 用来排除大于给定字节大小的文件,`--min-file-size` 用于排除小于给定字节大小的文件:
```
$ sudo rdiff-backup --max-file-size 5M --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup
@ -100,7 +100,7 @@ Remote Server (tecmint) : 192.168.56.102
Local Backup Server (backup) : 192.168.56.10
```
如前所述,你必须在两台机器上安装相同版本的 rdiff-backup如下所示请尝试在两台机器上检查版本
如前所述,你必须在两台机器上安装相同版本的 rdiff-backup如下所示请尝试在两台机器上检查版本
```
$ rdiff-backup -V
@ -109,7 +109,7 @@ $ rdiff-backup -V
![Check rdiff Version on Servers](http://www.tecmint.com/wp-content/uploads/2017/03/check-rdif-versions-on-servers.png)
][7]
检查服务器中 rdiff 版本
*检查服务器中 rdiff 版本*
在备份服务器中,像这样创建一个存储备份文件的目录:
@ -124,13 +124,13 @@ $ rdiff-backup -V
# rdiff-backup root@192.168.56.102::/root/ /backups/192.168.56.102_rootfiles.backup
```
下面的截图展示了远程服务器 192.168.56.102 中的 root 文件夹以及 192.168.56.10 备份服务器中的已备份文件:
下面的截图展示了远程服务器 192.168.56.102 中的 `root` 文件夹以及 192.168.56.10 备份服务器中的已备份文件:
[
![Backup Remote Directory on Local Server](http://www.tecmint.com/wp-content/uploads/2017/03/Backup-Remote-Linux-Directory-on-Local-Server.png)
][8]
在本地服务器备份远程目录
*在本地服务器备份远程目录*
注意截图中 “backup” 目录中创建的 rdiff-backup-data 文件夹,它包含了备份过程和增量文件的重要数据。
@ -138,15 +138,15 @@ $ rdiff-backup -V
![rdiff-backup - Backup Process Files](http://www.tecmint.com/wp-content/uploads/2017/03/rdiff-backup-data-directory-contents.png)
][9]
rdiff-backup 备份过程文件
*rdiff-backup 备份过程文件*
现在,在 192.168.56.102 服务器中,如下所示 root 目录已经添加了额外的文件:
现在,在 192.168.56.102 服务器中,如下所示 `root` 目录已经添加了额外的文件:
[
![Verify Backup Directory](http://www.tecmint.com/wp-content/uploads/2017/03/additional-files-in-root-directory.png)
][10]
验证备份目录
*验证备份目录*
让我们再次运行备份命令以获取更改的数据,我们可以使用 `-v[0-9]`(其中数字指定详细程度级别,默认值为 3这是静默模式选项设置详细功能
@ -157,9 +157,9 @@ rdiff-backup 备份过程文件
![Incremental Backup with Summary](http://www.tecmint.com/wp-content/uploads/2017/03/incremental-backup-of-root-files.png)
][11]
带有摘要的增量备份
*带有摘要的增量备份*
要列出 /backups/192.168.56.102_rootfiles.backup 目录中包含的部分增量备份的数量和日期,我们可以运行:
要列出 `/backups/192.168.56.102_rootfiles.backup` 目录中包含的部分增量备份的数量和日期,我们可以运行:
```
# rdiff-backup -l /backups/192.168.56.102_rootfiles.backup/
@ -169,7 +169,7 @@ rdiff-backup 备份过程文件
使用 `--print-statistics` 成功备份后,我们可以打印摘要统计信息。但是,如果我们不设置此选项,我们可以仍从会话统计中获得。在手册页的 “STATISTICS” 部分中阅读有关此选项的更多信息。
-remote-schema 标志使我们能够指定使用替代方法连接到远程计算机。
`-remote-schema` 选项使我们能够指定使用替代方法连接到远程计算机。
现在,我们开始在备份服务器 192.168.56.10 上创建一个 `backup.sh` 脚本,如下所示:
@ -231,18 +231,18 @@ Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin 和 web
via: http://www.tecmint.com/rdiff-backup-remote-incremental-backup-for-linux/
作者:[Aaron Kili ][a]
作者:[Aaron Kili][a]
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/aaronkili/
[1]:http://www.tecmint.com/install-cygwin-to-run-linux-commands-on-windows-system/
[2]:http://www.tecmint.com/rsync-local-remote-file-synchronization-commands/
[3]:http://www.tecmint.com/ssh-passwordless-login-using-ssh-keygen-in-5-easy-steps/
[3]:https://linux.cn/article-6901-1.html
[4]:http://www.tecmint.com/sync-new-changed-modified-files-rsync-linux/
[5]:http://www.tecmint.com/ssh-passwordless-login-using-ssh-keygen-in-5-easy-steps/
[5]:https://linux.cn/article-6901-1.html
[6]:http://www.tecmint.com/wp-content/uploads/2017/03/Backup-Files-to-Different-Partition.png
[7]:http://www.tecmint.com/wp-content/uploads/2017/03/check-rdif-versions-on-servers.png
[8]:http://www.tecmint.com/wp-content/uploads/2017/03/Backup-Remote-Linux-Directory-on-Local-Server.png

View File

@ -1,3 +1,5 @@
translating by wi-cuckoo
[How debuggers work: Part 2 - Breakpoints][26]
============================================================

View File

@ -1,272 +0,0 @@
Understanding 7z command switches - part I
============================================================
### On this page
1. [Include files][1]
2. [Exclude files][2]
3. [Set password for your archive][3]
4. [Set output directory][4]
5. [Creating multiple volumes][5]
6. [Set compression level of archive][6]
7. [Display technical information of archive][7]
7z is no doubt a feature-rich and powerful archiver (claimed to offer the highest compression ratio). Here at HowtoForge, we have [already discussed][9] how you can install and use it. But the discussion was limited to basic features that you can access using the 'function letters' the tool provides.
Expanding our coverage on the tool, here in this tutorial, we will be discussing some of the 'switches' 7z offers. But before we proceed, it's worth sharing that all the instructions and commands mentioned in this tutorial have been tested on Ubuntu 16.04 LTS.
**Note**: We will be using the files displayed in the following screenshot for performing various operations using 7zip.
[
![ls from test directory](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/ls.png)
][10]
###
Include files
The 7z tool allows you selectively include files in an archive. This feature can be accessed using the -i switch.
Syntax:
-i[r[-|0]]{@listfile|!wildcard}
For example, if you want to include only .txt files in your archive, you can use the following command:
$ 7z a -i!*.txt include.7z
Here is the output:
[
![add files to 7zip](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/include.png)
][11]
Now, to check whether the newly-created archive file contains only .txt file or not, you can use the following command:
$ 7z l include.7z
Here is the output:
[
![Result](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/includelist.png)
][12]
In the above screenshot, you can see that only testfile.txt file has been added to the archive.
### Exclude files
If you want, you can also exclude the files that you dont need. This can be done using the -x switch.
Syntax:
-x[r[-|0]]]{@listfile|!wildcard}
For example, if you want to exclude a file named abc.7z from the archive that you are going to create, then you can use the following command:
$ 7z a -x!abc.7z exclude.7z
Here is the output:
[
![exclude files from 7zip](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/exclude.png)
][13]
To check whether the resulting archive file has excluded abc.7z or not, you can use the following command:
$ 7z l exclude.7z
Here is the output:
[
![result of file exclusion](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/excludelist.png)
][14]
In the above screenshot, you can see that abc.7z file has been excluded from the new archive file.
**Pro tip**: Suppose the task is to exclude all the .7z files with names starting with letter t and include all .7z files with names starting with letter a . This can be done by combining both -i and -x switches in the following way:
$ 7z a '-x!t*.7z' '-i!a*.7z' combination.7z
### Set password for your archive
7z also lets you password protect your archive file. This feature can be accessed using the -p switch.
$ 7z a [archive-filename] -p[your-password] -mhe=[on/off]
**Note**: The -mhe option enables or disables archive header encryption (default is off).
For example:
$ 7z a password.7z -pHTF -mhe=on
Needless to say, when you will extract your password protected archive, the tool will ask you for the password. To extract a password-protected file, use the 'e' function letter. Following is an example:
$ 7z e password.7z
[
![protect 7zip archive with a password](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/password.png)
][15]
### Set output directory
The tool also lets you extract an archive file in the directory of your choice. This can be done using the -o switch. Needless to say, the switch only works when the command contains either the e function letter or the x function letter.
$ 7z [e/x] [existing-archive-filename] -o[path-of-directory]
For example, suppose the following command is run in the present working directory:
$ 7z e output.7z -ohow/to/forge
And, as the value passed to the -o switch suggests, the aim is to extract the archive in the ./how/to/forge directory.
Here is the output:
[
![7zip output directory](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/output.png)
][16]
In the above screenshot, you can see that all the contents of existing archive file has been extracted. But where? To check whether or not the archive file has been extracted in the ./how/to/forge directory or not, we can use the ls -R command.
[
![result](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/ls_-R.png)
][17]
In the above screenshot, we can see that all the contents of output.7z have indeed been extracted to ./how/to/forge.
### Creating multiple volumes
With the help of the 7z tool, you can create multiple volumes (smaller sub-archives) of your archive file. This is very useful when transferring large files over a network or in a USB. This feature can be accessed using the -v switch. The switch requires you to specify size of sub-archives.
We can specify size of sub-archives in bytes (b), kilobytes (k), megabytes (m) and gigabytes (g).
$ 7z a [archive-filename] [files-to-archive] -v[size-of-sub-archive1] -v[size-of-sub-archive2] ....
Let's understand this using an example. Please note that we will be using a new directory for performing operations on the -v switch.
Here is the screenshot of the directory contents:
[
![7zip volumes](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/volumels.png)
][18]
Now, we can run the following command for creating multiple volumes (sized 100b each) of an archive file:
7z a volume.7z * -v100b
Here is the screenshot:
[
![compressing volumes](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/volume.png)
][19]
Now, to see the list of sub-archives that were created, use the ls command.
[
![list of archives](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/volumels2.png)
][20]
As seen in the above screenshot, a total of four multiple volumes have been created - volume.7z.001, volume.7z.002, volume.7z.003, and volume.7z.004
**Note**: You can extract files using the .7z.001 archive. But, for that, all the other sub-archive volumes should be present in the same directory.
### Set compression level of archive
7z also allows you to set compression levels of your archives. This feature can be accessed using the -m switch. There are various compression levels in 7z, such as -mx0, -mx1, -mx3, -mx5, -mx7 and -mx9.
Here's a brief summary about these levels:
-**mx0** = Don't compress at all - just copy the contents to archive.
-**mx1** = Consumes least time, but compression is low.
-**mx3** = Better than -mx1.
-**mx5** = This is default (compression is normal).
-**mx7** = Maximum compression.
-**mx9** = Ultra compression.
**Note**: For more information on these compression levels, head [here][8].
$ 7z a [archive-filename] [files-to-archive] -mx=[0,1,3,5,7,9]
For example, we have a bunch of files and folders in a directory, which we tried compressing using a different compression level each time. Just to give you an idea, here's the command used when the archive was created with compression level '0'.
$ 7z a compression(-mx0).7z * -mx=0
Similarly, other commands were executed.
Here is the list of output archives (produced using the 'ls' command), with their names suggesting the compression level used in their creation, and the fifth column in the output revealing the effect of compression level on their size.
[
![7zip compression level](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/compression.png)
][21]
###
Display technical information of archive
If you want, 7z also lets you display technical information of an archive - it's type, physical size, header size, and so on - on the standard output. This feature can be accessed using the -slt switch. This switch only works with the l function letter.
$ 7z l -slt [archive-filename]
For example:
$ 7z l -slt abc.7z
Here is the output:
[
![](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/slt.png)
][22]
# Specify type of archive to create
If you want to create a non 7zip archive (which gets created by default), you can specify your choice using the -t switch. 
$ 7z a -t[specify-type-of-archive] [archive-filename] [file-to-archive]
The following example shows a command to create a .zip file:
7z a -tzip howtoforge *
The output file produced is 'howtoforge.zip'. To cross verify its type, use the 'file' command:
[
![](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/type.png)
][23]
So, howtoforge.zip is indeed a ZIP file. Similarly, you can create other kind of archives that 7z supports.
# Conclusion
As you would agree, the knowledge of 7z 'function letters' along with 'switches' lets you make the most out of the tool. We aren't yet done with switches - there are some more that will be discussed in part 2.
--------------------------------------------------------------------------------
via: https://www.howtoforge.com/tutorial/understanding-7z-command-switches/
作者:[ Himanshu Arora][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://www.howtoforge.com/tutorial/understanding-7z-command-switches/
[1]:https://www.howtoforge.com/tutorial/understanding-7z-command-switches/#include-files
[2]:https://www.howtoforge.com/tutorial/understanding-7z-command-switches/#exclude-files
[3]:https://www.howtoforge.com/tutorial/understanding-7z-command-switches/#set-password-for-your-archive
[4]:https://www.howtoforge.com/tutorial/understanding-7z-command-switches/#set-output-directory
[5]:https://www.howtoforge.com/tutorial/understanding-7z-command-switches/#creating-multiple-volumes
[6]:https://www.howtoforge.com/tutorial/understanding-7z-command-switches/#set-compression-level-of-archive
[7]:https://www.howtoforge.com/tutorial/understanding-7z-command-switches/#display-technical-information-of-archive
[8]:http://askubuntu.com/questions/491223/7z-ultra-settings-for-zip-format
[9]:https://www.howtoforge.com/tutorial/how-to-install-and-use-7zip-file-archiver-on-ubuntu-linux/
[10]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/ls.png
[11]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/include.png
[12]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/includelist.png
[13]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/exclude.png
[14]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/excludelist.png
[15]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/password.png
[16]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/output.png
[17]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/ls_-R.png
[18]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/volumels.png
[19]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/volume.png
[20]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/volumels2.png
[21]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/compression.png
[22]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/slt.png
[23]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/type.png

View File

@ -0,0 +1,272 @@
了解 7z 命令开关 - 第一部分
============================================================
### 本篇中
1. [包含文件][1]
2. [排除文件][2]
3. [设置归档的密码][3]
4. [设置输出目录][4]
5. [创建多个卷][5]
6. [设置归档的压缩级别][6]
7. [显示归档的技术信息][7]
7z 无疑是一个功能强大的强大的归档工具(声称提供最高的压缩比)。在 HowtoForge 中,我们已经[已经讨论过][9]如何安装和使用它。但讨论仅限于你可以使用该工具提供的“功能字母”来使用基本功能。
在本教程中,我们将扩展对这个工具的说明,我们会讨论一些 7z 提供的“开关”。 但在继续之前,需要分享的是本教程中提到的所有说明和命令都已在 Ubuntu 16.04 LTS 上进行了测试。
**注意**:我们将使用以下截图中显示的文件来执行使用 7zip 的各种操作。
[
![ls from test directory](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/ls.png)
][10]
###
包含文件
7z 工具允许你有选择地将文件包含在归档中。可以使用 -i 开关来使用此功能。
语法:
-i[r[-|0]]{@listfile|!wildcard}
比如,如果你想在归档中只包含 “.txt” 文件,你可以使用下面的命令:
$ 7z a -i!*.txt include.7z
这是输出:
[
![add files to 7zip](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/include.png)
][11]
现在,检查新创建的归档是否只包含 “.txt” 文件,你可以使用下面的命令:
$ 7z l include.7z
这是输出:
[
![Result](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/includelist.png)
][12]
在上面的截图中,你可以看到 “testfile.txt” 已经包含到归档中了。
### 排除文件
如果你想要,你可以排除不想要的文件。可以使用 -x 开关做到。
语法:
-x[r[-|0]]]{@listfile|!wildcard}
比如,如果你想在要创建的归档中排除 “abc.7z” ,你可以使用下面的命令:
$ 7z a -x!abc.7z exclude.7z
这是输出:
[
![exclude files from 7zip](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/exclude.png)
][13]
要检查最后的归档是否排除了 “abc.7z”, 你可以使用下面的命令:
$ 7z l exclude.7z
这是输出:
[
![result of file exclusion](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/excludelist.png)
][14]
上面的截图中,你可以看到 “abc.7z” 已经从新的归档中排除了。
**专业提示**:假设任务是排除以 “t” 开头的所有 .7z 文件,并且包含以字母 “a” 开头的所有 .7z 文件。这可以通过以下方式组合 “-i” 和 “-x” 开关来实现:
$ 7z a '-x!t*.7z' '-i!a*.7z' combination.7z
### 设置归档密码
7z 同样也支持用密码保护你的归档文件。这个功能可以使用 -p 开关来实现。
$ 7z a [archive-filename] -p[your-password] -mhe=[on/off]
**注意**-mhe 选项用来启用或者禁用归档头加密(默认是 off)。
例子:
$ 7z a password.7z -pHTF -mhe=on
无需多说,当你解压密码保护的归档时,工具会向你询问密码。要解压一个密码保护的文件,使用 “e” 功能字母。下面是例子:
$ 7z e password.7z
[
![protect 7zip archive with a password](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/password.png)
][15]
### 设置输出目录
工具同样支持解压文件到你选择的目录中。这可以使用 -o 开关。无需多说,这个开关只在含有 “e” 或者 “x” 功能字母的时候有用。
$ 7z [e/x] [existing-archive-filename] -o[path-of-directory]
比如,假设下面命令工作在当前的工作目录中:
$ 7z e output.7z -ohow/to/forge
如 -o 开关的值所指的那样,它的目标是解压文件到 ./how/to/forge 中。
这是输出:
[
![7zip output directory](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/output.png)
][16]
在上面的截图中,你可以看到归档文件的所有内容都已经解压了。但是在哪里?要检查文件是否被解压到 ./how/to/forge我们可以使用 “ls -R” 命令。
[
![result](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/ls_-R.png)
][17]
在上面的截图中,我们可以看到 .7z 中的内容都被解压到 ./how/to/forge 中。
### 创建多个卷
借助 7z 工具,你可以为归档创建多个卷(较小的子档案)。当通过网络或 USB 传输大文件时,这是非常有用的。可以使用 -v 开关使用此功能。这个开关需要指定子档案的大小。
我们可以以字节b、千字节k、兆字节m和千兆字节g指定子档案大小。
$ 7z a [archive-filename] [files-to-archive] -v[size-of-sub-archive1] -v[size-of-sub-archive2] ....
让我们用一个例子来理解这个。请注意,我们将使用一个新的目录来执行 -v 开关的操作。
这是目录内容的截图:
[
![7zip volumes](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/volumels.png)
][18]
现在,我们运行下面的命令来为一个归档文件创建多个卷(每个大小 100b
7z a volume.7z * -v100b
这是截图:
[
![compressing volumes](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/volume.png)
][19]
现在,要查看创建的子归档,使用 “ls” 命令。
[
![list of archives](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/volumels2.png)
][20]
如下截图所示,一个四个卷创建了 - volume.7z.001、volume.7z.002、volume.7z.003 和 volume.7z.004
**注意**:你可以使用 .7z.001 归档解压文件。但是,要这么做,其他所有的卷都应该在同一个目录内。
### 设置归档的压缩级别
7z 允许你设置归档的压缩级别。这个功能可以使用 -m 开关。7z 中有不同的压缩级别,比如:-mx0、-mx1、-mx3、-mx5、-mx7 和 -mx9
这是这些压缩级别的简要说明:
-**mx0** = 完全不压缩 - 只是复制文件到归档中。
-**mx1** = 消耗最少时间,但是压缩最小。
-**mx3** = 比 -mx1 好。
-**mx5** = 这是默认级别 (常规压缩)。
-**mx7** = 最大化压缩。
-**mx9** = 极端压缩。
**注意**:关于这些压缩级别的更多信息,阅读[这里][8]。
$ 7z a [archive-filename] [files-to-archive] -mx=[0,1,3,5,7,9]
例如,我们在目录中有一堆文件和文件夹,我们每次尝试使用不同的压缩级别进行压缩。只是为了给你一个想法,这是当使用压缩级别 “0” 时创建存档时使用的命令。
$ 7z a compression(-mx0).7z * -mx=0
相似地,其他命令也这样执行。
以下是输出档案(使用 “ls” 命令生成)的列表,其名称表示其创建中使用的压缩级别,输出中的第五列显示压缩级别对其大小的影响。
[
![7zip compression level](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/compression.png)
][21]
###
显示归档的技术信息
如果需要7z 还可以在标准输出中显示归档的技术信息 - 类型、物理大小、头大小等。可以使用 -slt 开关使用此功能。 此开关仅适用于带有 “l” 功能字母的情况下。
$ 7z l -slt [archive-filename]
比如:
$ 7z l -slt abc.7z
这是输出:
[
![](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/slt.png)
][22]
# 指定创建归档的类型
如果你想要创建一个非 7z 的归档文件(这是默认的创建类型),你可以使用 -t 开关来指定。
$ 7z a -t[specify-type-of-archive] [archive-filename] [file-to-archive]
下面的例子展示创建了一个 .zip 文件:
7z a -tzip howtoforge *
输出的文件是 “howtoforge.zip”。要交叉验证它的类型使用 “file” 命令:
[
![](https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/type.png)
][23]
因此howtoforge.zip 的确是一个 ZIP 文件。相似地,你可以创建其他 7z 支持的归档。
# 总结
你会同意的是 7z 的 “功能字母” 以及 “开关” 的知识可以让你充分利用这个工具。我们还没有完成开关的部分 - 其余部分将在第 2 部分中讨论。
--------------------------------------------------------------------------------
via: https://www.howtoforge.com/tutorial/understanding-7z-command-switches/
作者:[ Himanshu Arora][a]
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://www.howtoforge.com/tutorial/understanding-7z-command-switches/
[1]:https://www.howtoforge.com/tutorial/understanding-7z-command-switches/#include-files
[2]:https://www.howtoforge.com/tutorial/understanding-7z-command-switches/#exclude-files
[3]:https://www.howtoforge.com/tutorial/understanding-7z-command-switches/#set-password-for-your-archive
[4]:https://www.howtoforge.com/tutorial/understanding-7z-command-switches/#set-output-directory
[5]:https://www.howtoforge.com/tutorial/understanding-7z-command-switches/#creating-multiple-volumes
[6]:https://www.howtoforge.com/tutorial/understanding-7z-command-switches/#set-compression-level-of-archive
[7]:https://www.howtoforge.com/tutorial/understanding-7z-command-switches/#display-technical-information-of-archive
[8]:http://askubuntu.com/questions/491223/7z-ultra-settings-for-zip-format
[9]:https://www.howtoforge.com/tutorial/how-to-install-and-use-7zip-file-archiver-on-ubuntu-linux/
[10]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/ls.png
[11]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/include.png
[12]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/includelist.png
[13]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/exclude.png
[14]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/excludelist.png
[15]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/password.png
[16]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/output.png
[17]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/ls_-R.png
[18]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/volumels.png
[19]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/volume.png
[20]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/volumels2.png
[21]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/compression.png
[22]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/slt.png
[23]:https://www.howtoforge.com/images/understanding_7z_command_switches_part_i/big/type.png

View File

@ -1,259 +0,0 @@
# 常用的 GDB 命令中文释义
## 目录
- [break](#break) -- 缩写 `b`,在指定的行或函数处设置断点
- [info breakpoints](#info-breakpoints) -- 简写 `i b`,打印未删除的所有断点,观察点和捕获点的列表
- [disable](#disable) -- 禁用断点,可以缩写为 `dis`
- [enable](#enable) -- 启用断点
- [clear](#clear) -- 清除指定行或函数处的断点
- [delete](#delete) -- 缩写 `d`,删除断点
- [tbreak](#tbreak) -- 设置临时断点,参数同 `break`,但在程序第一次停住后会被自动删除
- [watch](#watch) -- 为表达式(或变量)设置观察点,当表达式(或变量)的值有变化时,停住程序
- [step](#step) -- 缩写 `s`,单步跟踪,如果有函数调用,会进入该函数
- [reverse-step](#reverse-step) -- 反向单步跟踪,如果有函数调用,会进入该函数
- [next](#next) -- 缩写 `n`,单步跟踪,如果有函数调用,不会进入该函数
- [reverse-next](#reverse-next) -- 反向单步跟踪,如果有函数调用,不会进入该函数
- [return](#return) -- 使选定的栈帧返回到其调用者
- [finish](#finish) -- 缩写 `fin`,执行直到选择的栈帧返回
- [until](#until) -- 缩写 `u`,执行直到...(用于跳过循环、递归函数调用)
- [continue](#continue) -- 同义词 `c`,恢复程序执行
- [print](#print) -- 缩写 `p`,打印表达式 EXP 的值
- [x](#x) -- 查看内存
- [display](#display) -- 每次程序停止时打印表达式 EXP 的值(自动显示)
- [info display](#info-display) -- 打印早先设置为自动显示的表达式列表
- [disable display](#disable-display) -- 禁用自动显示
- [enable display](#enable-display) -- 启用自动显示
- [undisplay](#undisplay) -- 删除自动显示项
- [help](#help) -- 缩写 `h`,打印命令列表(带参数时查找命令的帮助)
- [attach](#attach) -- 挂接到已在运行的进程来调试
- [run](#run) -- 缩写 `r`,启动被调试的程序
- [backtrace](#backtrace) -- 缩写 `bt`,查看程序调用栈的信息
************
## break
使用 `break` 命令(缩写 `b`)来设置断点。 参见[官方文档][1]。
- `break` 当不带参数时,在所选栈帧中执行的下一条指令处设置断点。
- `break <function-name>` 在函数体入口处打断点,在 C++ 中可以使用 `class::function``function(type, ...)` 格式来指定函数名。
- `break <line-number>` 在当前源码文件指定行的开始处打断点。
- `break -N` `break +N` 在当前源码行前面或后面的 `N` 行开始处打断点,`N` 为正整数。
- `break <filename:linenum>` 在源码文件 `filename``linenum` 行处打断点。
- `break <filename:function>` 在源码文件 `filename``function` 函数入口处打断点。
- `break <address>` 在程序指令的地址处打断点。
- `break ... if <cond>` 设置条件断点,`...` 代表上述参数之一(或无参数),`cond` 为条件表达式,仅在 `cond` 值非零时停住程序。
## info breakpoints
查看断点,观察点和捕获点的列表。用法:
`info breakpoints [list…]`
`info break [list…]`
`list…` 用来指定若干个断点的编号(可省略),可以是 `2` `1-3` `2 5` 等。
## disable
禁用一些断点。 参见[官方文档][2]。
参数是用空格分隔的断点编号。
要禁用所有断点,不加参数。
禁用的断点不会被忘记,但直到重新启用才有效。
用法: `disable [breakpoints] [list…]`
`breakpoints``disable` 的子命令(可省略),`list…` 同 `info breakpoints` 中的描述。
## enable
启用一些断点。 参见[官方文档][2]。
给出断点编号(以空格分隔)作为参数。
没有参数时,所有断点被启用。
- `enable [breakpoints] [list…]` 启用指定的断点(或所有定义的断点)。
- `enable [breakpoints] once list…` 临时启用指定的断点。GDB 在停止您的程序后立即禁用这些断点。
- `enable [breakpoints] delete list…` 使指定的断点启用一次然后删除。一旦您的程序停止GDB 就会删除这些断点。等效于用 `tbreak` 设置的断点。
`breakpoints``disable` 中的描述。
## clear
在指定行或函数处清除断点。 参见[官方文档][3]。
参数可以是行号,函数名称或 "*" 跟一个地址。
- `clear` 当不带参数时,清除所选栈帧在执行的源码行中的所有断点。
- `clear <function>`, `clear <filename:function>` 删除在命名函数的入口处设置的任何断点。
- `clear <linenum>`, `clear <filename:linenum>` 删除在指定的文件指定的行号的代码中设置的任何断点。
- `clear <address>` 清除指定程序指令的地址处的断点。
## delete
删除一些断点或自动显示表达式。 参见[官方文档][3]。
参数是用空格分隔的断点编号。
要删除所有断点,不加参数。
用法: `delete [breakpoints] [list…]`
## tbreak
设置临时断点。参数形式同 `break` 一样。 参见[官方文档][1]。
除了断点是临时的之外像 `break` 一样,所以在命中时会被删除。
## watch
为表达式设置观察点。 参见[官方文档][4]。
用法: `watch [-l|-location] <expr>`
每当一个表达式的值改变时,观察点就会停止执行您的程序。
如果给出了 `-l` 或者 `-location`,则它会对 `expr` 求值并观察它所指向的内存。
例如,`watch *(int *)0x12345678` 将在指定的地址处观察一个 4 字节的区域(假设 int 占用 4 个字节)。
## step
单步执行程序,直到到达不同的源码行。 参见[官方文档][5]。
用法: `step [N]`
参数 `N` 表示执行 N 次(或由于另一个原因直到程序停止)。
警告:如果当控制在没有调试信息的情况下编译的函数中使用 `step` 命令,则执行将继续进行,
直到控制到达具有调试信息的函数。 同样,它不会进入没有调试信息编译的函数。
要执行没有调试信息的函数,请使用 `stepi` 命令,后文再述。
## reverse-step
反向步进程序,直到到达另一个源码行的开头。 参见[官方文档][6]。
用法: `reverse-step [N]`
参数 `N` 表示执行 N 次(或由于另一个原因直到程序停止)。
## next
单步执行程序,执行完子程序调用。 参见[官方文档][5]。
用法: `next [N]`
`step` 不同,如果当前的源代码行调用子程序,则此命令不会进入子程序,而是继续执行,将其视为单个源代码行。
## reverse-next
反向步进程序,执行完子程序调用。 参见[官方文档][6]。
用法: `reverse-next [N]`
如果要执行的源代码行调用子程序,则此命令不会进入子程序,调用被视为一个指令。
参数 `N` 表示执行 N 次(或由于另一个原因直到程序停止)。
## return
您可以使用 `return` 命令取消函数调用的执行。 参见[官方文档][7]。
如果你给出一个表达式参数,它的值被用作函数的返回值。
`return <expression>``expression` 的值作为函数的返回值并使函数直接返回。
## finish
执行直到选定的栈帧返回。 参见[官方文档][5]。
用法: `finish`
返回后,返回的值将被打印并放入到值历史记录中。
## until
执行直到程序到达大于当前栈帧或当前栈帧中的指定位置(与 [break](#break) 命令相同的参数)的源码行。 参见[官方文档][5]。
此命令用于通过一个多次的循环,以避免单步执行。
`until <location>``u <location>` 继续运行程序,直到达到指定的位置,或者当前栈帧返回。
## continue
在信号或断点之后,继续运行被调试的程序。 参见[官方文档][5]。
用法: `continue [N]`
如果从断点开始,可以使用数字 `N` 作为参数,这意味着将该断点的忽略计数设置为 `N - 1`(以便断点在第 N 次到达之前不会中断)。
如果启用了非停止模式(使用 `show non-stop` 查看),则仅继续当前线程,否则程序中的所有线程都将继续。
## print
求值并打印表达式 EXP 的值。 参见[官方文档][8]。
可访问的变量是所选栈帧的词法环境,以及范围为全局或整个文件的所有变量。
用法: `print [expr]``print /f [expr]`
`expr` 是一个(在源代码语言中的)表达式。
默认情况下,`expr` 的值以适合其数据类型的格式打印;您可以通过指定 `/f` 来选择不同的格式,其中 `f` 是一个指定格式的字母;参见[输出格式][9]。
如果省略 `expr`GDB 再次显示最后一个值。
## x
检查内存。 参见[官方文档][10]。
用法: `x/nfu <addr>``x <addr>`
`n`, `f`, 和 `u` 都是可选参数,用于指定要显示的内存以及如何格式化。
`addr` 是要开始显示内存的地址的表达式。
`n` 重复次数(默认值是 1指定要显示多少个单位`u` 指定)的内存值。
`f` 显示格式(初始默认值是 `x`),显示格式是 `print('x''d''u''o''t''a''c''f''s')` 使用的格式之一,再加 `i`(机器指令)。
`u` 单位大小,`b` 表示单字节,`h` 表示双字节,`w` 表示四字节,`g` 表示八字节。
例如,`x/3uh 0x54320` 表示从地址 0x54320 开始以无符号十进制整数的方式,双字节为单位显示 3 个内存值。
## display
每次程序停止时打印表达式 EXP 的值。 参见[官方文档][11]。
用法: `display <expr>`, `display/fmt <expr>``display/fmt <addr>`
`fmt` 用于指定显示格式。像 [print](#print) 命令里的 `/f` 一样。
对于格式 `i``s`,或者包括单位大小或单位数量,将表达式 `addr` 添加为每次程序停止时要检查的内存地址。
## info display
打印自动显示的表达式列表,每个表达式都带有项目编号,但不显示其值。
包括被禁用的表达式和不能立即显示的表达式(当前不可用的自动变量)。
## undisplay
取消某些表达式在程序停止时自动显示。
参数是表达式的编号(使用 `info display` 查询编号)。
不带参数表示取消所有自动显示表达式。
`delete display` 具有与此命令相同的效果。
## disable display
禁用某些表达式在程序停止时自动显示。
禁用的显示项目不会被自动打印,但不会被忘记。 它可能稍后再次被启用。
参数是表达式的编号(使用 `info display` 查询编号)。
不带参数表示禁用所有自动显示表达式。
## enable display
启用某些表达式在程序停止时自动显示。
参数是重新显示的表达式的编号(使用 `info display` 查询编号)。
不带参数表示启用所有自动显示表达式。
## help
打印命令列表。 参见[官方文档][12]。
您可以使用不带参数的 `help`(缩写为 `h`)来显示命令的类别名的简短列表。
使用 `help <class>` 您可以获取该类中各个命令的列表。
使用 `help <command>` 显示如何使用该命令的简述。
## attach
挂接到 GDB 之外的进程或文件。 参见[官方文档][13]。
该命令可以将进程 ID 或设备文件作为参数。
对于进程 ID您必须具有向进程发送信号的权限并且必须具有与调试器相同的有效的 uid。
用法: `attach <process-id>`
GDB 在安排调试指定的进程之后做的第一件事是停住它。
您可以使用所有通过 `run` 命令启动进程时可以使用的 GDB 命令来检查和修改挂接的进程。
## run
启动被调试的程序。 参见[官方文档][14]。
可以直接指定参数,也可以用 [set args][15] 设置(启动所需的)参数。
例如: `run arg1 arg2 ...` 等效于
```
set args arg1 arg2 ...
run
```
还允许使用 ">", "<", 或 ">>" 进行输入和输出重定向。
## backtrace
打印整个栈的回溯。 参见[官方文档][16]。
- `bt` 打印整个栈的回溯,每个栈帧一行。
- `bt n` 类似于上,但只打印最内层的 n 个栈帧。
- `bt -n` 类似于上,但只打印最外层的 n 个栈帧。
- `bt full n` 类似于 `bt n`,还打印局部变量的值。
`where``info stack`(缩写 `info s`) 是 `backtrace` 的别名。
************
## 参考资料
- [Debugging with GDB](https://sourceware.org/gdb/current/onlinedocs/gdb/)
- [用 GDB 调试程序(二)](http://blog.csdn.net/haoel/article/details/2880)
--------------------------------------------------------------------------------
编译者:[robot527](https://github.com/robot527)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[1]:https://sourceware.org/gdb/current/onlinedocs/gdb/Set-Breaks.html
[2]:https://sourceware.org/gdb/current/onlinedocs/gdb/Disabling.html
[3]:https://sourceware.org/gdb/current/onlinedocs/gdb/Delete-Breaks.html
[4]:https://sourceware.org/gdb/current/onlinedocs/gdb/Set-Watchpoints.html
[5]:https://sourceware.org/gdb/current/onlinedocs/gdb/Continuing-and-Stepping.html
[6]:https://sourceware.org/gdb/current/onlinedocs/gdb/Reverse-Execution.html
[7]:https://sourceware.org/gdb/current/onlinedocs/gdb/Returning.html
[8]:https://sourceware.org/gdb/current/onlinedocs/gdb/Data.html
[9]:https://sourceware.org/gdb/current/onlinedocs/gdb/Output-Formats.html
[10]:https://sourceware.org/gdb/current/onlinedocs/gdb/Memory.html
[11]:https://sourceware.org/gdb/current/onlinedocs/gdb/Auto-Display.html
[12]:https://sourceware.org/gdb/current/onlinedocs/gdb/Help.html
[13]:https://sourceware.org/gdb/current/onlinedocs/gdb/Attach.html
[14]:https://sourceware.org/gdb/current/onlinedocs/gdb/Starting.html
[15]:https://sourceware.org/gdb/current/onlinedocs/gdb/Arguments.html
[16]:https://sourceware.org/gdb/current/onlinedocs/gdb/Backtrace.html

File diff suppressed because it is too large Load Diff