吕滔博客 https://www.lvtao.net/ zh-CN 记录一些工作或生活或爱好的地方 Thu, 21 Sep 2017 21:13:00 +0800 Thu, 21 Sep 2017 21:13:00 +0800 discuz附件图片迁移阿里云OSS https://www.lvtao.net/tool/discuz-file-move-aliyun-oss.html https://www.lvtao.net/tool/discuz-file-move-aliyun-oss.html Thu, 21 Sep 2017 21:13:00 +0800 memory discuz附件图片迁移阿里云OSS,该方法也适用于七牛、又拍云

数据库相关操作

涉及到的数据库表:

pre_forum_attachment 
pre_home_pic 
pre_portal_article_title 
pre_portal_attachment 
pre_portal_topic_pic

1、pre_forum_attachment

update pre_forum_attachment_0 set remote = '1'; 
update pre_forum_attachment_1 set remote = '1'; 
update pre_forum_attachment_2 set remote = '1'; 
update pre_forum_attachment_3 set remote = '1'; 
update pre_forum_attachment_4 set remote = '1'; 
update pre_forum_attachment_5 set remote = '1'; 
update pre_forum_attachment_6 set remote = '1'; 
update pre_forum_attachment_7 set remote = '1'; 
update pre_forum_attachment_8 set remote = '1'; 
update pre_forum_attachment_9 set remote = '1';

2、pre_portal_article_title,pre_portal_attachment,pre_portal_topic_pic

update pre_portal_article_title set remote=1; 
update pre_portal_attachment set remote=1; 
update pre_portal_topic_pic set remote=1;

3、由于相册表中的remote取值还有一种情况为remote=2(论坛附件图片保存到相册)pre_home_pic,执行语句:

update pre_home_pic set remote=remote+1;

按照以上操作后,打开网站附件--属性看看是否已经在远程地址上了,大功告成。

部分帖子处理

UPDATE `pre_forum_post` SET `message` = replace(message, 'http://www.lvtao.net/data/attachment', 'http://img.lvtao.net')  WHERE  `message` LIKE '%data/attachment/%';

UPDATE `pre_forum_post` SET `message` = replace(message, 'data/attachment', 'http://img.lvtao.net')  WHERE  `message` LIKE '%data/attachment/%';

门户文章帖子

UPDATE `pre_portal_article_content ` SET `message` = replace(message, 'http://www.lvtao.net/data/attachment', 'http://img.lvtao.net')  WHERE  `content ` LIKE '%data/attachment/%';

UPDATE `pre_portal_article_content ` SET `message` = replace(message, 'data/attachment', 'http://img.lvtao.net')  WHERE  `content ` LIKE '%data/attachment/%';

本地附件迁移至oss

下载地址 ossimport-2.2.2.zip 解压后这熊样儿

ossimport
├── bin
│   └── ossimport2.jar  # 包括Master、Worker、TaskTracker、Console四个模块的总jar
├── conf
│   ├── local_job.cfg   # Job配置文件
│   └── sys.properties  # 系统运行参数配置文件
├── console.bat         # Windows命令行,可以分布执行调入任务
├── console.sh          # Linux命令行,可以分布执行调入任务
├── import.bat          # Windows一键导入,执行配置文件为conf/local_job.cfg配置的数据迁移任务,包括启动、迁移、校验、重试
├── import.sh           # Linux一键导入,执行配置文件为conf/local_job.cfg配置的数据迁移任务,包括启动、迁移、校验、重试
├── logs                # 日志目录
└── README.md           # 说明文档,强烈建议使用前仔细阅读

然后仔细看README改配置.执行就OK

dz后台配置远程附件

安装这货ossftp-1.0.2-linux-mac.zip,解压后直接运行

Windows: 双击运行start.vbs即可
Linux: 打开终端,运行
$ bash start.sh
Mac: 双击start.command,或者在终端运行
$ bash start.command

上述步骤会启动一个FTP server, 默认监听在127.0.0.1的2048端口。同时,为了方便您对FTP server的状态进行管控,还会启动一个web服务器,监听在127.0.0.1的8192端口.
我不需要web,直接在服务器上

python ossftp/ftpserver.py &

然后FTP上

主机: 127.0.0.1
登录类型: 正常
用户:access_key_id/bucket_name
密码:access_key_secret

至于dz嘛,我就给张官方的介绍图啦
1.png
1.需要选择启用远程附件。
2.启用SSL链接为 否。
3.FTP服务器地址, 即运行ossftp工具的地址,一般填127.0.0.1即可。
4.FTP服务的端口号,默认为2048。
5.FTP登录用户名,格式为AccessKeyID/BukcetName, 注意这里的’/‘不是’或‘的意思。
6.FTP的登录密码,为AceessKeySecrete。
7.被动模式连接,选择默认的是即可。
2.png
8.远程附件目录,填 . 表示在Bucket的根目录下创建上传目录。
9.远程访问URL, 填 http://BucketName.Endpoint 即可。
这里测试所用bucket为test-hz-jh-002, 属于杭州区域的,所以这里填写的是http://test-hz-jh-002.oss-cn-hangzhou.aliyuncs.com
注意BucketName要和Endpoint匹配。
10.超时时间,设置为0即可,表示服务默认。
11.设置好后,可以点击测试远程附件,如果成功则会出现如下画面。

]]>
0 https://www.lvtao.net/tool/discuz-file-move-aliyun-oss.html#comments https://www.lvtao.net/feed/tool/discuz-file-move-aliyun-oss.html
mac终端下svn常用命令 https://www.lvtao.net/tool/mac-svn.html https://www.lvtao.net/tool/mac-svn.html Tue, 19 Sep 2017 09:41:39 +0800 memory 一些常用命令
1、将文件checkout到本地目录

svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain
简写:svn co

2、往版本库中添加新的文件

svn add file
例如:svn add test.php(添加test.php)
svn add *.php(添加当前目录下所有的php文件)

3、将改动的文件提交到版本库

svn commit -m “LogMessage“ [-N] [--no-unlock] PATH        (如果选择了保持锁,就使用–no-unlock开关)
例如: svn commit -m “add test file for my test“ test.php
简写:svn ci

4、加锁/解锁

svn lock -m “LockMessage“ [--force] PATH
例如:svn lock -m “lock test file“ test.php
svn unlock PATH

5、更新到某个版本

svn update -r m path
例如:svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
简写:svn up

6、查看文件或者目录状态

1)svn status path(目录下的文件和子目录的状态,正常状态不显示)【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st

7、删除文件

svn delete path -m “delete test fle“
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”
或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推荐使用这种
简写:svn (del, remove, rm)

8、查看日志

svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化

9、查看文件详细信息

svn info path
例如:svn info test.php

10、比较差异

svn diff path(将修改的文件与基础版本比较)
例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php
简写:svn di

11、将两个版本之间的差异合并到当前文件

svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)

12、SVN 帮助

svn help
svn help ci

13、版本库下的文件和目录列表

svn list path
显示path目录下的所有属于版本库的文件和目录
简写:svn ls

14、创建纳入版本控制下的新目录

svn mkdir: 创建纳入版本控制下的新目录。
用法: 
1、mkdir PATH…
2、mkdir URL…

创建版本控制的目录。
1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增
调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。
在这两个情况下,所有的中间目录都必须事先存在

15、恢复本地修改

svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert:
用法: revert PATH…
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复
被删除的目录

16、代码库URL变更

svn switch (sw): 更新工作副本至不同的URL。
用法: 
1、switch URL [PATH]
2、switch –relocate FROM TO [PATH...]

1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的方法。
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用这个命令更新工作副本与仓库的对应关系。

17、解决冲突

svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH…
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的相关文件,然后让 PATH 可以再次提交。
]]>
0 https://www.lvtao.net/tool/mac-svn.html#comments https://www.lvtao.net/feed/tool/mac-svn.html
理解PHP中的stdClass类 https://www.lvtao.net/dev/php-stdclass.html https://www.lvtao.net/dev/php-stdclass.html Mon, 18 Sep 2017 11:18:11 +0800 memory 相信大家跟我一样,会经常看到和下面很类似的PHP代码:

$user = new stdClass();
$user->name = 'gouki';

这样的代码,这是干嘛用的呢?
翻开手册,搜索stdClass,你会发现,手册上几乎没有介绍,如果你再次搜索google,看到的也几乎全是英文解释。
其实,stdClass在PHP5才开始被流行。而stdClass也是zend的一个保留类。似乎没有其他作用。也几乎没有任何说明。
或者,我们可以这么理解:stdClass是PHP的一个基类,所有的类几乎都继承这个类,所以任何时候都可以被new,可以让这个变量成为一个object。同时,这个基类又有一个特殊的地方,就是没有方法。
凡时用new stdClass()的变量,都不可能会出现$a->test()这种方式的使用。
或者,我们可以又这么理解一下,正因为PHP5的对象的独特性,对象在任何地方被调用,都是引用地址型的,所以相对消耗的资源会少一点。在其它页面为它赋值时是直接修改,而不是引用一个拷贝。
例如:

$user = new stdClass();
$user->name = 'gouki';
$myUser = $user;
$myUser->name = 'flypig';

如果在PHP4时代,这样的代码就是在消耗系统资源。因为:$myUser = $user;这是创建了一个拷贝。所以,在PHP4的时候,都是这样使用:

$myUser = & $user;

有人说,为什么不用数组呢?数组不是更方便吗?而且对于PHP这样的弱类型程序来说,用数组应该是最方便的。
确实。数组在程序的使用中应该是最方便的,然而数组的每次被引用($a = $b),其实都是创建了一个副本,而且,数组被unset后,还是占用了内存(这个是听人说来的,我没有测试……也不知道怎么测试,如果有人知道,请告诉我,谢谢 )
不过SPL的标准类库里,还有一个函数arrayobject,可以直接将数组转化为对象这也是一个好办法哦

]]>
0 https://www.lvtao.net/dev/php-stdclass.html#comments https://www.lvtao.net/feed/dev/php-stdclass.html
折腾macOS下的vim配置 https://www.lvtao.net/tool/vim.html https://www.lvtao.net/tool/vim.html Mon, 18 Sep 2017 00:41:00 +0800 memory 平时用vim基本上也就是在服务器上编辑配置文件.
最近到了新公司,发现同事们都用的是vim[好牛逼是不是],哈哈.
自己平时用ide习惯了,突然想,要不也试试本地的,反正是折腾.记录一下吧

Vim语法高亮设置

只需要找到vimrc配置文件就行,在终端输入下面的指令,就可以打开配置文件

cp /usr/share/vim/vimrc ~/.vimrc
~/.vimrc

然后在末尾加上

syntax on
set nu!
set autoindent

分别是语法高亮、行号、自动缩进.
保存下,再开vim发现就已经变样了.好easy是不是.

给些参数的参考

set hlsearch "高亮度反白 
set backspace=2 "可随时用倒退键删除 
set autoindent "自动缩排 
set ruler "可显示最后一行的状态 
set showmode "左下角那一行的状态 
set nu "可以在每一行的最前面显示行号 
set bg=dark "显示不同的底色色调 
syntax on "进行语法检验,颜色显示 
set wrap "自动折行 
set shiftwidth=4 
set tabstop=4 
set softtabstop=4 
set expandtab "将tab替换为相应数量空格 
set smartindent

下面可根据自己的需要,可以不选用

set guifont=Dorid Sans Mono:h14:uft8 "gvim字体设置 
set encoding=utf8 "设置内部编码为utf8 
set fileencoding=utf8 "当前编辑的文件编码 
set fileencodings=uft8-bom,utf8,gbk,gb2312,big5 "打开支持编码的文件

"解决consle输出乱码 
language messages zh_CN.utf-8 
"解决菜单乱码 
source VIMRUNTIME/delmenu.vimsourceVIMRUNTIME/menu.vim

我们继续折腾

vim主题配色

上面的样子是不是感觉好丑.
打开官网,据说wombat256这个主题不错.我们从官网捞下来 https://vim.sourceforge.io/scripts/script.php?script_id=2465
下载了一个wombat256.vim文件,放到~/.vim/colors/目录下.别告诉我你没这目录,自己想办法...
然后我们再来改改上面那个配置文件.vimrc再加上

colorscheme wombat256

再试试.其实我个人感觉wombat256mod比wombat256好看多了.哈哈
好了,再次打开你会发现样式变了...

安装插件

安装phpcomplete插件

如果是VIM7.0以上,不需要再下载phpcomplete.vim这个插件,因为安装时自带了,在目录/usr/share/vim/vim74/autoload/phpcomplete.vim中。
~/.vimrc中添加这样两行:
filetype plugin on autocmd FileType php set omnifunc=phpcomplete#CompletePHP
如何使用?我也不会用好不好...只知道这货自带了...

快捷键

vim的键映射map,它有五种前缀,对应着vim中的五种模式:

nore前缀: 非递归

n前缀:    在普通模式下生效

v前缀:    在可视模式下生效

i前缀:     在插入模式下生效

c前缀:    在EX命令模式下生效

通过不同的前缀,就能明确告诉vim,我们自定义的快捷键在哪种模式下生效。

除此之外,还要配合键表:

<k0>-<k9>       小键盘数字0到9
<S-x>                大写S配合x,意味着shift+x组合键
<C-x>               大写C配合x,意味着ctrl+x组合键
<A-x>               大写A配合x,意味着alt+x组合键
<ESC>               ESC键
<BS>                backspace退格键
<CR>                ENTER回车键
<Space>           空格键
<Shift>             shift键
<Ctrl>               ctrl键
<Alt>                alt键
<F1>-<F12>    F1到F12功能键

尽管能映射的键表非常丰富,但因为某些历史原因,ALT几乎无法映射。
同时CTRL键被linux系统频繁使用,F1到F12功能键某些也被vim占用。
比如F1是帮助,这些都不适合用来映射,以免造成快捷键冲突。

~/.vimrc配置文件属于文本文件,我们用vim打开,把以下的修改写入vimrc,完成后千万不要忘记保存退出。

光标移动映射

无数的初学者都被vim反人类的h,j,k,l光标移动折磨,所以个人把它修改成更符合习惯的j,k,l,i
i本身属于插入模式开关,映射后被占用了,以后只能使用a来切换插入模式。

"映射上下左右的光标移动
nnoremap  i   k
nnoremap  k  j
nnoremap  j   h

使用前缀nore,表明不递归,否则按下i就等于按下k,就等于按下j,最后结果乱套。

vim自带的行光标移动也不方便,移动到行首^,需要按shift+6,移动到行尾$,需要按shift+4。
个人也把它们进行映射:

"行光标移动
nmap lh   ^
nmap le   $

连续按下lh就表明移动到行首,lh可以理解成line_head,le理解成line_end。

功能键映射

vim的映射不仅能提供单个按键,也能提供一系列按键操作映射,类似于宏操作。
这时候可能许多初学者跟我一样,迫切的想把保存文件功能,映射成Windows下的ctrl+s

imap <C+s> <ESC>:w<CR>a 

用imap表明插入模式下有效 , 后面的:w a 作为整体看待。
事实上这样映射后,按ctrl+s会发现vim“定住”了,按什么键屏幕上都没反映,最后只能强行关闭。
为什么呢?这是因为ctrl+x的组合键,不少被linux系统占用了,ctrl+s是暂停功能。
而操作系统的优先级更高,当我们按下ctrl+s的时候,它会首先执行操作系统的功能。要退出ctrl+s暂停状态,按下ctrl+q恢复。
所以前面说,尽管键表映射非常丰富,但实际上并非不受限制的随意映射。
我们改换下思路,可以这样做:

"文件保存与退出
nmap fw     :w<CR>
nmap fq     :q<CR>
nmap fwq    :wq<CR>

在普通模式,快速按下fw,就相当于输入了:w,fw可以理解成file_write。
我们可能需要频繁变更 .vimrc,要让变更内容生效,一般的做法是先保存 .vimrc 再重启 vim,太繁琐了。
增加如下设置,可以实现在保存 .vimrc 时自动重启加载它。

" 让配置变更立即生效
autocmd BufWritePost $MYVIMRC source $MYVIMRC

<leader>前缀键

vim自带的快捷键很多,再加上各类插件提供的快捷键,我们自己定义的快捷键,这些混合在一起,非常容易引起按键的冲突,为了环境该问题,vim引入了<leader>前缀键。
前缀键的意思就是,在各种快捷键的最前面加上<leader>,避免了二义性。
比如我们定义<leader>是#号:

let mapleader="#"  

配合键盘映射:

nmap <leader>w    :w<CR>  

在普通模式按下#w时,就完成了文件的保存工作。
选用的应该容易输入,不会和现有快捷键符号发生冲突,造成二义性。
发挥想象,实现简单的模版:

let mapleader="\"  
imap <leader>if   if () <CR>{};  
imap <leader>main  int main()<CR>{<CR> return 0;<CR>}  

不同模式下的键盘映射

使用:map!命令,则只列出插入和命令行模式的映射。而:imap,:vmap,:omap,:nmap命令则只是列出相应模式下的映射。

其它的再说...自己开发还是习惯ide.哈哈

]]>
0 https://www.lvtao.net/tool/vim.html#comments https://www.lvtao.net/feed/tool/vim.html
Linux ar命令 https://www.lvtao.net/linux-bak-zip/ar.html https://www.lvtao.net/linux-bak-zip/ar.html Tue, 12 Sep 2017 19:57:39 +0800 memory Linux ar命令用于建立或修改备存文件,或是从备存文件中抽取文件。
ar可让您集合许多文件,成为单一的备存文件。在备存文件中,所有成员文件皆保有原来的属性与权限。

语法

ar[-dmpqrtx][cfosSuvV][a<成员文件>][b<成员文件>][i<成员文件>][备存文件][成员文件]

参数:

必要参数:

-d  删除备存文件中的成员文件。
-m  变更成员文件在备存文件中的次序。
-p  显示备存文件中的成员文件内容。
-q  将问家附加在备存文件末端。
-r  将文件插入备存文件中。
-t  显示备存文件中所包含的文件。
-x  自备存文件中取出成员文件。

选项参数:

a<成员文件>  将文件插入备存文件中指定的成员文件之后。
b<成员文件>  将文件插入备存文件中指定的成员文件之前。
c  建立备存文件。
f  为避免过长的文件名不兼容于其他系统的ar指令指令,因此可利用此参数,截掉要放入备存文件中过长的成员文件名称。
i<成员文件>  将问家插入备存文件中指定的成员文件之前。
o  保留备存文件中文件的日期。
s  若备存文件中包含了对象模式,可利用此参数建立备存文件的符号表。
S  不产生符号表。
u  只将日期较新文件插入备存文件中。
v  程序执行时显示详细的信息。
V  显示版本信息。

实例

打包文件

# ls   //显示当前目录文件   
a.c b.c d.c   install.log     qte
anaconda-ks.cfg c.c Desktop 

打包多个文件

# ar rv one.bak a.c b.c //打包 a.c b.c文件 
ar: 正在创建 one.bak
a - a.c
a - b.c

打包以.c结尾的文件

# ar rv two.bak *.c 
ar: 正在创建 two.bak
a - a.c
a - b.c
a - c.c
a - d.c

显示打包文件的内容

# ar t two.bak    
a.c
b.c
c.c
d.c

删除打包文件的成员文件

# ar d two.bak a.c b.c c.c  
# ar t two.bak       
d.c
]]>
0 https://www.lvtao.net/linux-bak-zip/ar.html#comments https://www.lvtao.net/feed/linux-bak-zip/ar.html
Linux bunzip2命令 https://www.lvtao.net/linux-bak-zip/bunzip2.html https://www.lvtao.net/linux-bak-zip/bunzip2.html Tue, 12 Sep 2017 19:55:44 +0800 memory Linux bunzip2命令是.bz2文件的解压缩程序。
bunzip2可解压缩.bz2格式的压缩文件。bunzip2实际上是bzip2的符号连接,执行bunzip2与bzip2 -d的效果相同。

语法:

bunzip2 [-fkLsvV][.bz2压缩文件]

参数:

-f或--force  解压缩时,若输出的文件与现有文件同名时,预设不会覆盖现有的文件。若要覆盖,请使用此参数。
-k或--keep  在解压缩后,预设会删除原来的压缩文件。若要保留压缩文件,请使用此参数。
-s或--small  降低程序执行时,内存的使用量。
-v或--verbose  解压缩文件时,显示详细的信息。
-l,--license,-V或--version  显示版本信息。

实例

解压.bz2文件

# bunzip2 -v temp.bz2 //解压文件显示详细处理信息
]]>
0 https://www.lvtao.net/linux-bak-zip/bunzip2.html#comments https://www.lvtao.net/feed/linux-bak-zip/bunzip2.html
Linux bzip2命令 https://www.lvtao.net/linux-bak-zip/bzip2.html https://www.lvtao.net/linux-bak-zip/bzip2.html Tue, 12 Sep 2017 19:54:53 +0800 memory Linux bzip2命令是.bz2文件的压缩程序。
bzip2采用新的压缩演算法,压缩效果比传统的LZ77/LZ78压缩演算法来得好。若没有加上任何参数,bzip2压缩完文件后会产生.bz2的压缩文件,并删除原始的文件。

语法

bzip2 [-cdfhkLstvVz][--repetitive-best][--repetitive-fast][- 压缩等级][要压缩的文件]

参数:

-c或--stdout  将压缩与解压缩的结果送到标准输出。
-d或--decompress  执行解压缩。
-f或--force  bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖,请使用此参数。
-h或--help  显示帮助。
-k或--keep  bzip2在压缩或解压缩后,会删除原始的文件。若要保留原始文件,请使用此参数。
-s或--small  降低程序执行时内存的使用量。
-t或--test  测试.bz2压缩文件的完整性。
-v或--verbose  压缩或解压缩文件时,显示详细的信息。
-z或--compress  强制执行压缩。
-L,--license,
-V或--version  显示版本信息。
--repetitive-best  若文件中有重复出现的资料时,可利用此参数提高压缩效果。
--repetitive-fast  若文件中有重复出现的资料时,可利用此参数加快执行速度。
-压缩等级  压缩时的区块大小。

实例

解压.bz2文件

# bzip2 -v temp.bz2 //解压文件显示详细处理信息 

压缩文件

# bzip2 -c a.c b.c c.c

检查文件完整性

# bzip2 -t temp.bz2
]]>
0 https://www.lvtao.net/linux-bak-zip/bzip2.html#comments https://www.lvtao.net/feed/linux-bak-zip/bzip2.html
Linux bzip2recover命令 https://www.lvtao.net/linux-bak-zip/bzip2recover.html https://www.lvtao.net/linux-bak-zip/bzip2recover.html Tue, 12 Sep 2017 19:53:58 +0800 memory Linux bzip2recover命令用来修复损坏的.bz2文件。
bzip2是以区块的方式来压缩文件,每个区块视为独立的单位。因此,当某一区块损坏时,便可利用bzip2recover,试着将文件中的区块隔开来,以便解压缩正常的区块。通常只适用在压缩文件很大的情况。

语法

bzip2recover [.bz2 压缩文件]

实例

修复.bz2文件

# bzip2recover col.bz2
]]>
0 https://www.lvtao.net/linux-bak-zip/bzip2recover.html#comments https://www.lvtao.net/feed/linux-bak-zip/bzip2recover.html
Linux gunzip命令 https://www.lvtao.net/linux-bak-zip/gunzip.html https://www.lvtao.net/linux-bak-zip/gunzip.html Tue, 12 Sep 2017 19:53:16 +0800 memory Linux gunzip命令用于解压文件。
gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为".gz"。事实上gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成。

语法

gunzip [-acfhlLnNqrtvV][-s <压缩字尾字符串>][文件...] 或 gunzip [-acfhlLnNqrtvV][-s <压缩字尾字符串>][目录]

参数:

-a或--ascii  使用ASCII文字模式。
-c或--stdout或--to-stdout  把解压后的文件输出到标准输出设备。
-f或-force  强行解开压缩文件,不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
-h或--help  在线帮助。
-l或--list  列出压缩文件的相关信息。
-L或--license  显示版本与版权信息。
-n或--no-name  解压缩时,若压缩文件内含有远来的文件名称及时间戳记,则将其忽略不予处理。
-N或--name  解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其回存到解开的文件上。
-q或--quiet  不显示警告信息。
-r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。
-S<压缩字尾字符串>或--suffix<压缩字尾字符串>  更改压缩字尾字符串。
-t或--test  测试压缩文件是否正确无误。
-v或--verbose  显示指令执行过程。
-V或--version 显示版本信息。
]]>
0 https://www.lvtao.net/linux-bak-zip/gunzip.html#comments https://www.lvtao.net/feed/linux-bak-zip/gunzip.html
Linux unarj命令 https://www.lvtao.net/linux-bak-zip/unarj.html https://www.lvtao.net/linux-bak-zip/unarj.html Tue, 12 Sep 2017 19:52:06 +0800 memory Linux unarj命令用于解压缩.arj文件。
unarj为.arj压缩文件的压缩程序。

语法

unarj [eltx][.arj压缩文件]

参数:

e 解压缩.arj文件。
l 显示压缩文件内所包含的文件。
t 检查压缩文件是否正确。
x 解压缩时保留原有的路径。

实例

解压.arj文件

# unarj e test.arj
]]>
0 https://www.lvtao.net/linux-bak-zip/unarj.html#comments https://www.lvtao.net/feed/linux-bak-zip/unarj.html