第十二章 文件归档压缩和系统间文件传输
12.1 使用tar管理归档文件
c创建新的归档文件
x对归档文件解包
t列出归档文件里的文件列表
v输出命令的归档或解包的过程
f指定文件
z使用gzip压缩归档后的文件(.tar.gz)
j使用bzip2压缩归档后的文件(.tar.bz2)
J使用xz压缩归档后的文件(tar.xz)
使用例子:
归档:
# tar cf archive.tar file1 file2 file3
# tar cf /root/etc.tar /etc
# tar tf /root/etc.tar
解包:
# mkdir /root/etcbackup
# cd /root/etcbackup
# tar xf /root/etc.tar
或者 # tar xf /root/etc.tar -C /root/etcbackup
归档并压缩:
# tar czf /root/etc.tar.gz /etc
# tar cjf /root/etc.tar.bz2 /etc
# tar cJf /root/etc.tar.xz /etc
解压缩并且解包
# tar xf /etc.tar.xz
12.2 使用scp、sftp、rsync实现远程文件传输
scp从本地把文件拷贝到远程
# scp /etc/fstab server0:/tmp
root@server0's password:
scp把远程的文件拷贝到本地, -r 拷贝目录
# scp server0:/etc/hosts /tmp/
scp -r /var/log server0:/tmp
sftp是一个使用ssh加密文件传输的ftp服务,能够保证文件传输过程是安全的
$ sftp server0 输入系统帐号对应的密码 ,sftp user@server0 指定登陆用户名
sftp> mkdir /tmp/sftptest
sftp> put /etc/hosts /tmp/sftptest/hosts
Uploading /etc/hosts to /tmp/sftptest/hosts
/etc/hosts 100% 231 0.2KB/s 00:00
sftp> cd /tmp/sftptest
sftp> put /etc/fstab
Uploading /etc/fstab to /tmp/sftptest/fstab
/etc/fstab 100% 313 0.3KB/s 00:00
sftp> ls
fstab hosts
sftp> get /etc/rc.d/rc.local
Fetching /etc/rc.d/rc.local to rc.local
/etc/rc.d/rc.local 100% 2652 2.6KB/s 00:00
sftp> quit
rsync远程同步命令
-r 同步整个目录
-l 同步字符连接文件
-p 保留文件权限
-t 保留文件时间
-g 保留文件属组关系
-o 保留文件所有关系
-D 同步设备文件
-a 保留文件以上的所有属性,但acl和selinux扩展属性忽略
-A 保留文件以上所有属性,同时保留acl和selinux扩展属性
# rsync -av /var/log/ /tmp
# rsync -av /var/log/ server0:/tmp
12.1
需要用root用户才可以归档
创建归档文件
[root@desktop0 Desktop]# tar cf /tmp/test.tar /bin/touch /bin/cp /bin/mv
tar: Removing leading `/' from member names
[root@desktop0 Desktop]# ls -lh /tmp/test.tar
-rw-r--r--. 1 root root 340K Jun 7 09:31 /tmp/test.tar
[root@desktop0 Desktop]# tar tf /tmp/test.tar
bin/touch
bin/cp
bin/mv
[root@desktop0 Desktop]#
创建归档目录
[root@desktop0 Desktop]# tar cf /root/etc.tar /etc
tar: Removing leading `/' from member names
ls -lh[root@desktop0 Desktop]# ls -lh /root/etc.tar
-rw-r--r--. 1 root root 30M Jun 7 09:41 /root/etc.tar
[root@desktop0 Desktop]# tar tf /root/etc.tar
所谓归档,就是把文件或目录入到一个文件夹中。
[root@desktop0 Desktop]# mkdir /root/etcbackup 新建一个目录
[root@desktop0 Desktop]# ls /root/etc
ls: cannot access /root/etc: No such file or directory
[root@desktop0 Desktop]# tar xf /root/etc.tar -C /root/etcbackup 解压到另外一个/root/etcbackup 目录
tar: etc/sysconfig/network-scripts: time stamp 2017-06-07 17:18:44 is 26434.752572334 s in the future
tar: etc/sysconfig: time stamp 2017-06-07 17:18:44 is 26434.751629293 s in the future
[root@desktop0 Desktop]# ls /root/etc
etcbackup/ etc.tar
[root@desktop0 Desktop]# ls /root/etc
etcbackup/ etc.tar
[root@desktop0 Desktop]# ls /root/etcbackup
etc
[root@desktop0 etcbackup]# pwd
/root/etcbackup
[root@desktop0 etcbackup]#
[root@desktop0 etcbackup]# tar xf /tmp/test.tar 也解包到这里,没有指定目录则就解压到当前目录。
[root@desktop0 etcbackup]# ls
bin etc
[root@desktop0 etcbackup]#
打包并压缩
[root@desktop0 etcbackup]# tar czf /root/etc.tar.gz /etc/
tar: Removing leading `/' from member names
[root@desktop0 etcbackup]# ls -lh /root/etc.tar*
-rw-r--r--. 1 root root 30M Jun 7 09:41 /root/etc.tar 没压缩30M
-rw-r--r--. 1 root root 8.4M Jun 7 10:10 /root/etc.tar.gz 压缩后8.4M
另外两种压缩:
[root@desktop0 etcbackup]# tar cjf /root/etc.tar.bz2 /etc
tar: Removing leading `/' from member names
[root@desktop0 etcbackup]# ls -lh /root/etc.tar*
-rw-r--r--. 1 root root 30M Jun 7 09:41 /root/etc.tar
-rw-r--r--. 1 root root 7.0M Jun 7 10:20 /root/etc.tar.bz2
-rw-r--r--. 1 root root 8.4M Jun 7 10:10 /root/etc.tar.gz
[root@desktop0 etcbackup]# tar cJf /root/etc.tar.xz /etc/
tar: Removing leading `/' from member names
[root@desktop0 etcbackup]# ls -lh /root/etc.tar*
-rw-r--r--. 1 root root 30M Jun 7 09:41 /root/etc.tar
-rw-r--r--. 1 root root 7.0M Jun 7 10:20 /root/etc.tar.bz2
-rw-r--r--. 1 root root 8.4M Jun 7 10:10 /root/etc.tar.gz
-rw-r--r--. 1 root root 5.7M Jun 7 10:21 /root/etc.tar.xz
解压缩
不管什么压缩方式 ,都用一条命令
tar xf
[root@desktop0 ~]# tar xvf etc.tar.gz -C /root/etc/etcbackup
tar: /root/etc/etcbackup: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
[root@desktop0 ~]#
[root@desktop0 ~]# tar xvf etc.tar.gz -C /root/etcbackup
12.2
一、从本机传到server
[root@desktop0 Desktop]# scp /etc/fstab server0:/tmp 从desktop这台传文件到server
[root@server0 ~]# ls /tmp 在server上可以看到这个文件
fstab systemd-private-Sd4Pvr
ssh-qYEFuBYtxIdP systemd-private-sYE7tE
systemd-private-6Mbvio vmware-root
systemd-private-aFr06s yum_save_tx.2017-06-03.14-46.oJnMrN.yumtx
systemd-private-KJ2QWO
[root@server0 ~]#
二、远程到server,从一个目录拷到另外一个目录
[root@server0 ~]# scp server0:/etc/hosts /tmp/
root@server0's password:
hosts 100% 231 0.2KB/s 00:00
[root@server0 ~]# ls /tmp/
fstab systemd-private-KJ2QWO
hosts systemd-private-Sd4Pvr
ssh-qYEFuBYtxIdP systemd-private-sYE7tE
systemd-private-6Mbvio vmware-root
systemd-private-aFr06s yum_save_tx.2017-06-03.14-46.oJnMrN.yumtx
[root@server0 ~]#
三、把本地的一个目录给远程
[root@desktop0 tmp]# scp -r /var/log server0:/tmp/ 把整个目录给到远端的服务器
四SFTP
上传:
sftp> put /etc/hosts /tmp/sftptest/hosts
Uploading /etc/hosts to /tmp/sftptest/hosts
/etc/hosts 100% 231 0.2KB/s 00:00
sftp> cd /tmp/sftptest
sftp> ls
hosts
sftp>
下载:
sftp> get /etc/rc.d/rc.local
sftp从哪里远程的,就下载到哪个路径
删除多个文件
[root@desktop0 ~]# ls
anaconda-ks.cfg Downloads etc.tar.bz2 Music rc.local
Desktop etcbackup etc.tar.gz Pictures Templates
Documents etc.tar etc.tar.xz Public Videos
[root@desktop0 ~]# rm -rf rc.local etc*
quit bye 退出登陆
五 rsync 同步命令
scp sftp都不是最常用的,而是rsync
1、同步到本地
[root@desktop0 Desktop]# rsync -av /var/log /tmp/1
2、同步到另外一台
[root@desktop0 Desktop]# rsync -av /var/log /tmp/1
用root才可以同步保留所有属性
如
[root@desktop0 1]# rsync -av /etc/ student@server0:/tmp
本机用root,对端用student同步,过去后是student