Linux10-归档、系统间复制文件
目录
一、tar命令
二、scp、sftp命令
三、rsync命令
一、tar命令
tar命令可以归档文件、目录,提取创建的归档文件,同时进行压缩解压缩。使用tar选项时不需要加-,下面是常用的tar选项。
- c,创建一个存档。
- x,提取一个存档。
- t,列出存档内容,但是不提取(解压缩)存档。
- v,显示创建、提取的详细信息,文件有哪些。
- f,指定创建、提取的存档文件名,后面紧跟文件名,通常放在最后一个选项。
- z,使用gzip压缩(.tar.gz)。
- j,使用bzip2压缩(.tar.bz2),压缩率通常比gzip高。
- J,使用xz压缩(.tar.xz),压缩率通常比bzip2高。
在创建tar归档之前,必须先验证目录中没有其他存档与要创建的存档名称相同,tar命令将覆盖现有的存档,没有警告提示。使用绝对路径名归档文件时,将默认从文件名中删除该路径前面的/符号。这样有助于边可能造成重要文件被覆盖的错误。分别创建/etc目录的存档文件etc_backup.tar.gz、etc_backup.tar.bz2、etc_backup.tar.xz,比较一下三个方式的压缩率。
[root@server0 ~]# ll
total 12
-rw-------. 1 root root 8619 May 7 2014 anaconda-ks.cfg[root@server0 ~]# tar czf etc_backup.tar.gz /etc/
tar: Removing leading `/' from member names
[root@server0 ~]# tar cjf etc_backup.tar.bz2 /etc/
tar: Removing leading `/' from member names
[root@server0 ~]# tar cJf etc_backup.tar.xz /etc/
tar: Removing leading `/' from member names[root@server0 ~]# ll -h
total 21M
-rw-------. 1 root root 8.5K May 7 2014 anaconda-ks.cfg
-rw-r--r--. 1 root root 7.0M Feb 15 13:26 etc_backup.tar.bz2
-rw-r--r--. 1 root root 8.4M Feb 15 13:26 etc_backup.tar.gz
-rw-r--r--. 1 root root 5.7M Feb 15 13:27 etc_backup.tar.xz
再分别将三个归档文件提取到/tmp/gz、/tmp/bz2、/tmp/xz目录。
[root@server0 ~]# cd /tmp/
[root@server0 tmp]# mkdir gz bz2 xz[root@server0 tmp]# cd gz/
[root@server0 gz]# tar xzf /root/etc_backup.tar.gz
[root@server0 gz]# ll
total 12
drwxr-xr-x. 133 root root 8192 Feb 15 13:24 etc[root@server0 gz]# cd ../bz2
[root@server0 bz2]# tar xjf /root/etc_backup.tar.bz2
[root@server0 bz2]# ll
total 12
drwxr-xr-x. 133 root root 8192 Feb 15 13:24 etc[root@server0 bz2]# cd ../xz/
[root@server0 xz]# tar xJf /root/etc_backup.tar.xz
[root@server0 xz]# ll
total 12
drwxr-xr-x. 133 root root 8192 Feb 15 13:24 etc
二、scp、sftp命令
scp命令的格式是 scp <local_path> [user@]<remote_host>:<remote_path> 和 scp [user@]<remote_host>:<remote_path> <local_path>,分别是从本地向远程主机拷贝文件、从远程主机向本地拷贝文件。其中[user@]是可选的,以[user]身份访问远程主机,如果没有指定那么就以本地登录用户访问。
我们将server上/root/etc_backup.tar.gz、/root/etc_backup.tar.bz2、/root/etc_backup.tar.xz三个文件拷贝到desktop上student账户的/home/student目录中.
[root@server0 ~]# ll
total 21468
-rw-------. 1 root root 8619 May 7 2014 anaconda-ks.cfg
-rw-r--r--. 1 root root 7309341 Feb 15 13:26 etc_backup.tar.bz2
-rw-r--r--. 1 root root 8742008 Feb 15 13:26 etc_backup.tar.gz
-rw-r--r--. 1 root root 5911136 Feb 15 13:27 etc_backup.tar.xz
[root@server0 ~]#
[root@server0 ~]# scp etc_backup.tar.bz2 etc_backup.tar.gz etc_backup.tar.xz desktop0:/home/student/
The authenticity of host 'desktop0 (172.25.0.10)' can't be established.
ECDSA key fingerprint is 65:4d:ac:8a:c9:58:82:b5:0c:91:c4:ef:a5:e6:f6:65.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'desktop0,172.25.0.10' (ECDSA) to the list of known hosts.
root@desktop0's password:
etc_backup.tar.bz2 100% 7138KB 7.0MB/s 00:01
etc_backup.tar.gz 100% 8537KB 8.3MB/s 00:00
etc_backup.tar.xz 100% 5773KB 5.6MB/s 00:00
[root@server0 ~]#
[root@server0 ~]# ssh student@desktop0 ls
student@desktop0's password:
etc_backup.tar.bz2
etc_backup.tar.gz
etc_backup.tar.xz
我们将desktop上/var/log目录以递归方式-r拷贝到本地/tmp目录中。
[root@server0 ~]# scp -r desktop0:/var/log /tmp
root@desktop0's password:
tallylog 100% 0 0.0KB/s 00:00
lastlog 100% 285KB 285.4KB/s 00:00
wtmp 100% 9216 9.0KB/s 00:00
btmp 100% 1152 1.1KB/s 00:00
tuned.log 100% 4403 4.3KB/s 00:00
messages 100% 311KB 311.1KB/s 00:00
secure 100% 15KB 15.3KB/s 00:00
maillog 100% 592 0.6KB/s 00:00
spooler 100% 0 0.0KB/s 00:00
ovirt-guest-agent.log 100% 3234 3.2KB/s 00:00
rhsm.log 100% 892 0.9KB/s 00:00
audit.log 100% 379KB 379.4KB/s 00:00
cron 100% 632 0.6KB/s 00:00
anaconda.log 100% 9289 9.1KB/s 00:00
syslog 100% 65KB 65.0KB/s 00:00
anaconda.xlog 100% 16KB 15.5KB/s 00:00
anaconda.program.log 100% 29KB 28.6KB/s 00:00
anaconda.packaging.log 100% 98KB 98.5KB/s 00:00
anaconda.storage.log 100% 47KB 47.0KB/s 00:00
anaconda.ifcfg.log 100% 1028 1.0KB/s 00:00
ks-script-V3Y2pV.log 100% 4460 4.4KB/s 00:00
ks-script-bYGfjD.log 100% 0 0.0KB/s 00:00
ks-script-l8BPxv.log 100% 0 0.0KB/s 00:00
cloud-init.log 100% 451KB 451.4KB/s 00:00
yum.log 100% 53KB 52.6KB/s 00:00
:0.log.1 100% 12KB 12.0KB/s 00:00
:0.log 100% 12KB 11.7KB/s 00:00
sa04 100% 656 0.6KB/s 00:00
sa15 100% 3056 3.0KB/s 00:00
dmesg.old 100% 32KB 32.3KB/s 00:00
boot.log 100% 5468 5.3KB/s 00:00
dmesg 100% 33KB 33.1KB/s 00:00
Xorg.0.log.old 100% 17KB 17.4KB/s 00:00
Xorg.0.log 100% 17KB 17.0KB/s 00:00
pm-powersave.log 100% 0 0.0KB/s 00:00
[root@server0 ~]# ll /tmp/
total 4
drwxr-xr-x. 3 root root 16 Feb 15 13:35 bz2
drwxr-xr-x. 3 root root 16 Feb 15 13:35 gz
drwxr-xr-x. 17 root root 4096 Feb 15 14:23 log
drwx------. 3 root root 16 Feb 15 13:24 systemd-private-kgiu1u
drwx------. 3 root root 16 Feb 15 13:24 systemd-private-lFP1bX
drwxr-xr-x. 3 root root 16 Feb 15 13:36 xz
sftp命令,通过ssh方式登录到远程主机 直接操作文件上传下载。登录以后,用ls、mkdir、cd等操作远程主机,用lls、lmkdir、lcd等操作本地主机,用put、get上传下载文件。
三、rsync命令
rsync命令是系统间安全复制文件的一种方式。和scp全复制不同,rsync只需要增量复制(复制系统之间差异),rsync更适合于两个相似目录之间进行同步。也就是说,rsync第一次是全备份,以后是增量备份。如果源头有文件被删除了,也可以指定--delete选项来进行差异备份。
rsync命令的选项
- -n,空运行。空运行是对真正执行命令时发生情况的模拟。在任何rsync操作前都应先执行空运行,确保重要文件不会被覆盖或删除。
- -v,在同步文件时向输出中添加详细信息,可以查看rsync模拟的具体情况。
- -a,存档模式。一次性启用以下选项。
- -P,断点续传。
- --delete,差异备份,源文件删除,那么同步时目的文件也删除。
- -r,地柜方式同步整个目录树。
- -l,同步符号链接。
- -p,保留权限。
- -t,保留时间戳。
- -g,保留组所有权。
- -o,保留文件所有者。
- -D,同步设备文件。
因此,同步文件常用的方式有这样几种。
- rsync -avPn <src> <dst> 同步src到dst,空运行,模拟运行。
- rsync -avP <src> <dst> 同步src到dst,只增量同步。
- rsync -avP --delete <src> <dst> 同步src到dst,差异同步。有增量会同步,src有文件删除那么dst也删除相应文件。
尝试一下,看看效果。
[root@server0 ~]# tree src
src
├── link -> /root/src/wp/
├── t1
├── t2
├── t3
├── t4
└── wp├── wa├── wb├── wc└── wd2 directories, 8 files[root@server0 ~]# tree dst/
dst/0 directories, 0 files[root@server0 ~]#
我们先模拟同步一次,看到这个过程会发生什么,但是dst目录并没有什么变化。
[root@server0 ~]# rsync -avPn src/ dst/
sending incremental file list
./
link -> /root/src/wp/
t1
t2
t3
t4
wp/
wp/wa
wp/wb
wp/wc
wp/wdsent 184 bytes received 46 bytes 460.00 bytes/sec
total size is 13 speedup is 0.06 (DRY RUN)[root@server0 ~]# tree dst/
dst/0 directories, 0 files
同步一下。
[root@server0 ~]# rsync -avP src/ dst/
sending incremental file list
./
link -> /root/src/wp/
t10 100% 0.00kB/s 0:00:00 (xfer#1, to-check=8/11)
t20 100% 0.00kB/s 0:00:00 (xfer#2, to-check=7/11)
t30 100% 0.00kB/s 0:00:00 (xfer#3, to-check=6/11)
t40 100% 0.00kB/s 0:00:00 (xfer#4, to-check=5/11)
wp/
wp/wa0 100% 0.00kB/s 0:00:00 (xfer#5, to-check=3/11)
wp/wb0 100% 0.00kB/s 0:00:00 (xfer#6, to-check=2/11)
wp/wc0 100% 0.00kB/s 0:00:00 (xfer#7, to-check=1/11)
wp/wd0 100% 0.00kB/s 0:00:00 (xfer#8, to-check=0/11)sent 472 bytes received 174 bytes 1292.00 bytes/sec
total size is 13 speedup is 0.02
[root@server0 ~]# tree dst/
dst/
├── link -> /root/src/wp/
├── t1
├── t2
├── t3
├── t4
└── wp├── wa├── wb├── wc└── wd2 directories, 8 files
增量同步一下。
[root@server0 ~]# touch src/t{11..14}
[root@server0 ~]# tree src/
src/
├── link -> /root/src/wp/
├── t1
├── t11
├── t12
├── t13
├── t14
├── t2
├── t3
├── t4
└── wp├── wa├── wb├── wc└── wd2 directories, 12 files
[root@server0 ~]# tree dst/
dst/
├── link -> /root/src/wp/
├── t1
├── t2
├── t3
├── t4
└── wp├── wa├── wb├── wc└── wd2 directories, 8 files
[root@server0 ~]# rsync -avP src/ dst/
sending incremental file list
./
t110 100% 0.00kB/s 0:00:00 (xfer#1, to-check=11/15)
t120 100% 0.00kB/s 0:00:00 (xfer#2, to-check=10/15)
t130 100% 0.00kB/s 0:00:00 (xfer#3, to-check=9/15)
t140 100% 0.00kB/s 0:00:00 (xfer#4, to-check=8/15)sent 343 bytes received 92 bytes 870.00 bytes/sec
total size is 13 speedup is 0.03
[root@server0 ~]# tree dst/
dst/
├── link -> /root/src/wp/
├── t1
├── t11
├── t12
├── t13
├── t14
├── t2
├── t3
├── t4
└── wp├── wa├── wb├── wc└── wd2 directories, 12 files
差异同步一下。 我们看到,被删除的t2、t11、t13也被同步删除,新增的g1、g2、g3也同步到dst目录。
[root@server0 ~]# rm src/t2 src/t{11,13} -f
[root@server0 ~]# touch src/g{1..3}[root@server0 ~]# tree src/
src/
├── g1
├── g2
├── g3
├── link -> /root/src/wp/
├── t1
├── t12
├── t14
├── t3
├── t4
└── wp├── wa├── wb├── wc└── wd2 directories, 12 files[root@server0 ~]# tree dst/
dst/
├── link -> /root/src/wp/
├── t1
├── t11
├── t12
├── t13
├── t14
├── t2
├── t3
├── t4
└── wp├── wa├── wb├── wc└── wd2 directories, 12 files[root@server0 ~]# rsync -avP --delete src/ dst/
sending incremental file list
./
deleting t2
deleting t13
deleting t11
g10 100% 0.00kB/s 0:00:00 (xfer#1, to-check=13/15)
g20 100% 0.00kB/s 0:00:00 (xfer#2, to-check=12/15)
g30 100% 0.00kB/s 0:00:00 (xfer#3, to-check=11/15)sent 308 bytes received 73 bytes 762.00 bytes/sec
total size is 13 speedup is 0.03[root@server0 ~]# tree dst/
dst/
├── g1
├── g2
├── g3
├── link -> /root/src/wp/
├── t1
├── t12
├── t14
├── t3
├── t4
└── wp├── wa├── wb├── wc└── wd2 directories, 12 files
相关文章:

pattern
常用的正则表达式 0-9 pattern"[0-9]*" 信用卡 [0-9]{13,16} 银联卡 ^62[0-5]\d{13,16}$ Visa: ^4[0-9]{12}(?:[0-9]{3})?$ 万事达:^5[1-5][0-9]{14}$ QQ号码: [1-9][0-9]{4,14} 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5…

VScode配置CMAKE文件
创建一个vscode文件 记得一定要创建一个build文件夹,因为cmake编译过程中产生的中间文件会放到build文件夹中。 打开VScode 配置文件 launch.json {"version": "0.2.0","configurations": [{"name": "(gdb) Launc…

三分钟了解“Java重写”
要了解“Java重写”,首先要知道“继承”,继承是一种基于已有类(父类)创建新类(子类)的一种方式 下面的Son类继承了Father类 public class Father(){public void eat(String name,int age){System.out.prin…

2017 .NET 開發者須知
筆記-Scott Hanselman 的 2017 .NET 開發者須知 转载http://blog.darkthread.net/post-2017-01-16-dotnet-dev-should-know-2017.aspx Scott Hanselman 前兩天有篇文章-What .NET Developers ought to know to start in 2017,我的工作&#x…

Linux11-RPM软件包和YUM源
目录 一、rpm 二、yum 一、rpm 红帽开发了RPM软件包管理器,RPMRedhat Package Manager。RPM软件包名的格式为<name>-<version>-<release>.<arch>.rpm。比如,httpd-tools-2.4.6-7.el7.x86_64.rpm,其中namehttpd-to…

SQL Server 与 ORACLE 的区别
sql server 与 oracle的区别: DBMS 数据库管理系统 1.数据类型不同。 sql server 的数据类型:int ,smallint ,char,varchar,nchar,nvarchar,ntext,datetime,smalldatetime,money,decima, float,bit…… oracle 的数据类型:number(…

php如何定时执行任务
PHP的实现决定了它没有Java和.Net这种AppServer的概念, 而http协议是一个无状态的协议, php只能被用户触发, 被调用, 调用后会自动退出内存, 没有常驻内存, 就没有办法准确的定时处理那么, 如果需要用PHP定时执行某些任务的话, 可以有以下俩个方法,下面就让我们来看…

Java的多态(详尽版)
父类类型(比如Mammal)的变量指向子类(比如Cat)创建的对象,使用该变量调用父类中一个*被子类重写*的方法(比如move方法), 则父类中的方法呈现出不同的行为特征,这就是多态…

C++ memset
memset的主要功能是对一片内存进行赋值(逐字节进行) 包含在头文件#include < cstring >中。 函数模板 void *memset(void *s, int v, size_t n); s:数组名,或指向某一片内存的指针名, v:要填充的值…

Linux12-文件系统基础
目录 一、识别文件系统和设备 1.1、分区 1.2、逻辑卷 二、挂载卸载文件系统命令mount、umount、blkid、lsof 2.1、挂载 2.2、卸载 三、检查文件系统命令df、du 四、制作文件链接命令ln 4.1、硬链接 4.2、软连接 五、查找文件命令locate、find 一、识别文件系统和设备…

C语言------运算符和表达式
1. 自动类型转换是由计算机自动完成的,当由低级别的向高级别的转换时,不会报警,但是当高级别的向低级别的转换时,会发出告警信息,信息意思就是提示会有部分数据丢失的可能。 2. 强制类型转换是通过“(数据类…

String类常用方法(看一眼就懂)
public class Test{public static void main(String[] args){String name " T o m ";System.out.println(name.length()); //输入字符的长度,(空格也占一个字节)System.out.println(name.equals(" T o m ")); //判断连…
1.2.2一个数可以有多少种用连续素数之和表示
#include <iostream> using namespace std; const int maxp2000,n10000; int prime[maxp],total0; bool isprime(int k)//bool函数用来求素数 {for(int i0;i<total;i)if(k%prime[i]0)//判断素数的一种方法(用这个数对数组当中所有的 素数 进行取余…

C++查找算法(更新中)
C的查找分为静态查找与动态查找。 静态查找:只是在查找表中判断是否有这一个元素,取出这个元素的属性。 动态查找:在查找过程中,会对查找表做出修改。 比如插入、删除。 静态查找 静态查找包括:顺序查找、二分查找、…

编译Linux Kernel(linux-4.19.178)并制作成rpm文件
目录 一、安装依赖项 二、下载、解压缩、制作.config文件 三、编译内核及打包 四、升级内核 首次尝试编译Linux内核,记录过程,提供Linux Kernel(linux-4.19.178)下载https://download.csdn.net/download/qpeity/15637656。 一、安装依赖项 安装依赖…

2016 多校赛3 A 水 B 期望,规律 C 各种博弈 J 物理题,积分 K 暴力,水
2016 Multi-University Training Contest 3 A - Sqrt Bo 题意:给一个数 n,问n要多少次平方后化为1,如果超过5次输出"TAT"。 tags:SB题,5次内平方的,即小于2*2*4*16*256*65536 。然后0、1特判。 #…

BZOJ 1801 [Ahoi2009]中国象棋(线性动规)(洛谷P2051)
题意:就是在n*m的格子中放“炮”(中国象棋中的棋子)问有多少种放法,使得没有任意的两个炮相互攻击 思路:我们很容易的得到一列或者一行中最多放下两个炮(我也只能得到这些了,满脑子状压…

Java中父类构造方法对子类构造方法的影响(不是一句话可以说清的)
推荐的阅读顺序是:先看Test类,再根据提示看父类和子类 让我们通过代码来了解一下:创建一个父类: public class Father{public Father(){super();//默认调用Object构造方法(Object是所有类的父类)System.out.println("父类构…

ORB_SLAM2概述
追踪线程 灰度化处理。构建当前帧(提取每幅图像的特征点,并分配到网格中,这会极大的方便某一领域内的特征点的查找与匹配)。单目相机初始化操作:通过特征点匹配,使用RANSACDLC计算H矩阵,并根据…

源同步方法与注意事项
2021年的信息安全攻防演练比2020年来的稍早了一些,还是一样的配方,还是一样的味道。检查单位的YUM源,发现没有CentOS 7.9的,排查后发现原来是中科大的rsync同步地址放生了变化,导致源同步失败。改一下地址就好…

Android开发教程 - 使用Data Binding(二)集成与配置
本系列目录 使用Data Binding(一)介绍使用Data Binding(二)集成与配置使用Data Binding(三)在Activity中的使用使用Data Binding(四)在Fragment中的使用使用Data Binding(…

Java封装(速读版)
封装就是使用公共方法对私有成员变量进行操作(赋值或获取),这样做可以防止该类的代码和数据被其他类 定义的代码随意访问,有助于数据的安全。–我们可以通过修改成员变量的属性(一般为private),…

C# 创建压缩文件
出处:http://www.cnblogs.com/sparkdev/ 在程序中对文件进行压缩解压缩是很重要的功能,不仅能减小文件的体积,还能对文件起到保护作用。如果是生成用户可以下载的文件,还可以极大的减少网络流量并提升下载速度。最近在一个 C# 项目…

Windows自带certutil工具校验用法
windows自带校验工具certutil,记录用法如下。 certutil -hashfile <file> MD5 certutil -hashfile <file> SHA1 certutil -hashfile <file> SHA256 注意MD5、SHA1、SHA256必须是大写的!否则报错! C:\Users\Lenovo\Downl…

C++数组名做函数形参/指针
数组名做函数形参 数组未开辟空间时 #include <iostream> using namespace std; void test(int* a) {*a 0;*(a1) 1;*(a2) 2;cout<<a[0]<<a[1]<<a[2]<<endl;return; } int main(int argc,char* argv[]) {int* a;test(a);cout<<a[0]<…

String创建方式及其区别(快速了解)
让我们来看两种赋值方式: 第一种:直接赋值 String name1 "Tom"; String name2 "Tom"; System.out.println(name1 name2);//用来判断name1和name2的地址是否相同,相同为true,不同为false //此时打印的结果…

npm 常用命令详解
本文以Windows平台上做测试,以gulp为示例做教程,出自作者白树,转载请声明! 目录 npm是什么npm install 安装模块npm uninstall 卸载模块npm update 更新模块npm outdated 检查模块是否已经过时npm ls 查看安装的模块npm init 在项…

linux Mysql 安装
一、wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm二、sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm三、yum install -y mysql-server mysql mysql-devel四、systemctl start mysqld.service 五、systemctl status mysqld.service六、mysq…

==和equals()的作用及区别
""的作用是比较两个变量是否相等。 当变量是基本数据类型时,比较的是值是否相等的:相等返回true,不等返回false: double a 100.0;int b 100;System.out.println(ab);//输出结果为:true当变量是引用类型时…

np.dot()运算准则
数组*数组 直接点乘。 数组*多维 数组有3个元素的话,用(3,)表示 二维矩阵3*3用(3,3)表示 (3,3) * (3,)结果为(3,),即包含3个元素的一维向量 https://blog.…