Linux中文件传输

1.准备工作

1.设置两台虚拟机的IP并更改主机名:
虚拟机server的IP设置为:172.25.150.50
虚拟机desktop的IP设置为:172.25.150.150
在这里插入图片描述
desktop:
在这里插入图片描述

2.文件同传:rsync

rsync [参数]  file   [email protected]: dir

  我们已经知道可以使用scp 命令来进行两台主机之间的文件传输,但是,scp 命令在进行大量文件传输时,如下:我们可以看到它是对于目录中的文件逐个进行传输:
在这里插入图片描述
而使用rsync可以使我们在传输文件时可以对整个目录下的内容同时进行传输:
首先我们在/mnt下新建文件并更改文件权限如下:
在这里插入图片描述
对于新建文件,使用rsync进行同传:
 若不加任何参数,rsysnc必须指定目录下的具体文件(/mnt/test1):
在这里插入图片描述
 在 ip50主机上的/mnt目录中,我们可以看到传输过去的test1文件,应该注意的是,传输过去的文件与源文件相比其权限、拥有者、所属用户组、创建时间都不相同,若我们相对源文件尽行一模一样的复制,则需要在rsync命令后面加具体的参数:
在这里插入图片描述
 若我们要对整个/mnt 里面的所有内容进行同传,则应该使用 -r 参数:

rsync -r(表示目录)  /mnt/  [email protected]:/mnt/

在这里插入图片描述
“注意”: 源文件中我们可以看到有个链接文件,类似于windows中的快捷方式,而仅使用 -r 参数,并不能是此文件也进行同传,必须使用别的参数。
 在Ip50端:
在这里插入图片描述
可以看到除了file 之外所有的文件都同传过来,并且,与源文件的时间相比,同传过来的文件并没有保留源文件的时间戳,新建文件的时间根据主机50的时间。
 若我们想保留源文件的拥有者,使用 -o(own)参数:

rsync -ro(own)  /mnt/  [email protected]:/mnt/

在这里插入图片描述
在这里插入图片描述
  -g 参数用户保留原文件的所有组:

rsync -rg(group)  /mnt/  [email protected]:/mnt/

在这里插入图片描述
在这里插入图片描述
  -p 参数用来保留文件的权限:

rsync -rp  /mnt/test2  [email protected]:/mnt/

在这里插入图片描述
在这里插入图片描述
  -l 参数用来将链接文件也进行同传:

rsync -rl  /mnt/  [email protected]:/mnt/

在这里插入图片描述
在这里插入图片描述
  -t参数用来同传文件的时间戳:
在这里插入图片描述
在这里插入图片描述
若我们在150主机上新建用户tom,并在/mnt目录中新建文件westos 将westos的用户组与拥有者都改为tom,将westos同传到50主机,此时50主机中并没有tom用户:
在这里插入图片描述
在这里插入图片描述
我们可以看到,对于本机中没有的用户,同传的文件拥有者与用户组信息会由此用户的uid与gid代替。
 -D参数用于同传设备文件:

rsync -Dr  /dev/pts  [email protected]:/mnt/

在这里插入图片描述

3.文件归档

  1. tar  ##只是将文件放在一起,不会进行压缩,文件大小不会改变
    参数:
    -c(creat)
    -f(指定归档文件名称)
    -t(查看)  
           tar -tf mnt.tar
    -r(添加)  ##只能添加存在的文件,且源文件不消失 tar -rf mnt.tar file
    -x(解档)  ##默认解压到当前
            tar -xf mnt.tar
    -C(解档到指定目录)  ##解档到/mnt目录
          tar -xf etc.tar -C /mnt
    -delet(删除)  ##从etc.tar中删除file
          tar -f etc.tar --delet file
    -get(只解压出指定文件)   #只从etc.tar中解压出file
          tar -f etc.tar --get file
    -v(显示详细信息)   ## -v参数必须与tf参数连用
            tar -tvf mnt.tar
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    “注意”:-xf 参数默认将文件解档到当前目录,若要指定目录的解档路径,应该再加上 -C参数:
    在这里插入图片描述
    –get 指定解档内容,默认将文件解档到当前目录,且原归档文件中的file不会消失:
    在这里插入图片描述
    –delet 指定删除归档文件中的内容:
    在这里插入图片描述
    -v参数显示详细信息:
    在这里插入图片描述

4.文件压缩

  1. zip   后缀:zip
      zip -r 目的文件名 源文件名
      unzip zip文件名     ##解压缩
    我们可以看到,直接使用zip -r 进行压缩时,是对目录中的文件逐个进行压缩,因此,对于大容量的目录, 直接压缩很耗时而且低效,所以我们可以先使用tar 进行打包,再进行压缩:
    在这里插入图片描述
  2. bzip2  源文件名   ##后缀:.bz2
    bunzip2  源文件名   ##解压缩
  3. gzip 源文件名 ##后缀: .gz
    gunzip  源文件名   ##解压缩
  4. xz 原文件名 ##后缀:.xz
    unxz   源文件名   ##解压缩
    在这里插入图片描述
    “注意”:
    1). bzip2,gzip,xz只能压缩文件,不能压缩目录,因此若想将一个目录内的内容全部压缩,就需要先使用tar进行打包,再进行压缩
    2). bzip2,gzip,xz对源文件进行压缩时,会覆盖源文件生成新的压缩文件
    3). 解压缩时,只有unzip会保留原来的文件,只有gunzip会覆盖具有相同文件名的文件,

5.打包并压缩:

tar z(gz)cf 目的文件名 源文件
 tar j(bz2)cf
 tar J(xz)cf

在这里插入图片描述

  1. 解压缩

    tar zxf
     
      tar jxf
     
      tar Jxf

在这里插入图片描述
在这里插入图片描述 在这里插入图片描述 “注意”:不同参数只能解压相应压缩格式     文件名与参数(压缩格式)无关