Linux系统之间拷贝文件的方法总结

首先,无论本地还是远程,需要移动或拷贝的文件较多且都不太大时,用cp命令和mv命令效率较低,可以先使用tar工具对将要拷贝/移动的内容进行打包/压缩,之后再进行拷贝/移动,最后再解包/解压缩。

另外,也是很关键的一个技巧,即,不必在tar打包/压缩完毕之后再进行拷贝,解包/解压缩,可以通过管道一边打包/压缩另一边执行拷贝解包/解压缩。

比如,tar命令可以和nc命令结合可以快速在两台机器之间传输文件和目录:

B机器:

nc -l 5555 |tar -C /tmp/test/ -xf -

A机器:

tar cf - /tmp/test/ |nc B'IP 5555

上述步骤将A机器/tmp/test/下的内容拷贝到B机器对应的目录中,其中tar cf - /tmp/test/ |nc B'IP 5555 将内容边打包边通过管道和nc命令传输到由对应IP地址和5555端口传到B机器,nc -l 5555 |tar -C /tmp/test/ -xf - 监听本机的555端口,并将接收到的内容解包至指定的目录(-C参数指定目标目录)

此外,tar还可与scp、ssh命令结合:

在A机打包后,复制到B机器并解包

tar -cf - /tmp/test | ssh B'IP "cd /tmp; tar -xf -"

在A机打包,并将打包好的文件复制到B机

tar -cf - /tmp/test | ssh B'IP "cd /tmp; cat - > test.tar"

tar -cf - /tmp/test | scp - B'USER@B'IP:/tmp

将A机的打包文件,复制到B机并解包

zcat test.tar | ssh B'IP "cd /tmp; tar -xf -"

也可以直接在本地这么使用:

cd /tmp/test1

tar -cf - . | (cd /tmp/test2 ; tar -xvpf -)

但有人试验后得出结论本地直接用cp较快

另外一些小技巧:

拷贝时除了拷贝单个文件还会拷贝目录,有时需要连同文件/目录的属性一同拷贝。可以在cp命令中使用-R参数递归拷贝目录,使用-p参数拷贝文件保留属性(默认是:mode,ownership,timestamps也可以通过 --preserve[=ATTR_LIST]指定要特别保留的属性如:context, links,xattr, all),使用-d参数拷贝文件保留连接。或者简单的使用-a参数(相当于使用-dR --preserve=all)

如果想看到拷贝大量小文件的进度可以写一个简单的小脚本:

代码如下:

cd /tmp/test

for i in *

do

cp $i 目标目录

echo $i is ok....

done

最后补充一条不是技巧的技巧:在使用一个工具完成一项任务之前,先思考当前用的工具是不是最适合的工具?有没有更好的工具或办法?如果工具确实很适用于当前任务,那么在使用该工具时有没有特殊的技巧可以提高工作效率?(通常,查看帮助文档可有意外收获)。

时间: 2024-10-28 08:21:50

Linux系统之间拷贝文件的方法总结的相关文章

windows与linux系统互相拷贝文件

借助 PSCP 命令可以实现文件的互拷: 1.下载pscp.exe 文件 2.如果想在所有目录可以执行,请更改环境变量. windows执行指令时直接到这些目录去寻找可执行文件. 设置环境变量的方法: 我的电脑->属性->高级->环境变量 里面有用户变量和系统变量两种.用户变量当然是只有当前用户才能使用的,系统变量是所有用户都能使用的. 我们就编辑用户变量中的变量名为PATH的变量. 点击"编辑"后发现变量值就是用分号";"隔开的路径名,在这里加上

如何用scp命令实现linux系统之间的文件复制

scp基于ssh登录. 把root文件夹test.tar.gz文件复制到远程主机root目录,命令如下: scp /root/test.tar.gz root@172.19.2.75:/root 回车后会提示你输入172.19.2.75主机的root用户登录密码. scp一般使用如下: scp local_file remote_username@remote_ip:remote_folder scp local_file remote_username@remote_ip:remote_fil

在Linux系统中加密文件的方法

  1. oppnssl md5 加密字符串的方法 a.手动输入命令及过程如下: 代码如下: #openssl //在终端中输入openssl后回车. OpenSSL> md5 //输入md5后回车 123456 //接着输入123456,不要输入回车.然后按3次ctrl+d. 123456e10adc3949ba59abbe56e057f20f883e //123456后面的就是密文了 解释:为何在输入123456后不回车呢? 是因为openssl默认会把回车符当做要加密的字符串中的一个字符,

采用scp命令在Linux系统之间copy文件

复制文件或目录命令: 复制文件: (1)将本地文件拷贝到 远程 scp 文件名 --用户名 @计 算机IP或者计算机名称 :远程路径         scp /home/test.ora root@10.138.130.29:/home/root     (2)从远程将文件拷回本地 scp --用户名 @计算机IP或者计算机名称 :文件名 本地路径        scp root@10.138.130.29:/home/root     /home/test.ora 复制目录: (1)将本地目录

如何恢复linux系统根分区文件权限

如果不小心将/目录权限搞错了,比如chmod -R 777 / 那么恭喜你,系统将崩溃,系统很多命令无法启动,命令无法执行: 或许你会说,找一台正常的系统照着权限改回来,那么恭喜你,数十万的文件也会让你崩溃. 这时候可以通过系统自带的getfacl命令来拷贝和还原系统权限,本文将告诉你如何恢复linux系统根分区文件权限 解决方法:找一台权限正常的linux(最好和故障机同版本的) 通过getfacl -R / >systemp.bak将这个正常系统的/目录下所有文件的权限都备份保存在syste

linux系统下hosts文件详解及配置_linux shell

hosts文件 hosts -- the static table lookup for host name(主机名查询静态表). hosts文件是Linux系统上一个负责ip地址与域名快速解析的文件,以ascii格式保存在/etc/目录下.hosts文件包含了ip地址与主机名之间的映射,还包括主机的别名.在没有域名解析服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的ip地址,否则就需要使用dns服务程序来解决.通过可以将常用的域名和ip地址映射加入到hosts文件中

Linux系统中的文件类型及文件扩展名详解

  Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念.我们通过一般应用程序而创建的比如file.txt.file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量的话,大多是常规文件(也被称为普通文件). 一. 文件类型 Linux文件类型常见的有:普通文件.目录文件.字符设备文件和块设备文件.符号链接文件等,现在我们进行一个简要的说明. 1. 普通文件 我们用 ls -lh 来查看某个文件的属性,可以看到有类似-rwxrwxrwx,值得注意

csv-如何在linux系统解析EXCEL文件?

问题描述 如何在linux系统解析EXCEL文件? 如题所示,现在有个项目,需要在linux环境下:1:直接解析xls文件2:或者用linux下的什么命令.工具之类把.xls文件转存为.csv文件,然后再读取csv文件 小弟不才,目前只实现了读取csv文件但是如何直接读取xls文件和""xls-->csv""文件转换,目前找不到有效的方法 请大大们帮忙. 解决方案 可以用libxlhttp://www.libxl.com/ 解决方案二: 可以参考这个博客:ht

关于网络抓包,linux系统下kismet的使用方法

问题描述 关于网络抓包,linux系统下kismet的使用方法 我想知道k?i?smet怎么用呢?我看到它抓的包了,但怎么保存成文件?只看到它扫描到附近的Wi-Fi,能抓到客户端的包么? 解决方案 使用XILINX SDK工具通过网络进行基于linux系统的远程调试方法Linux下抓包工具tcpdump使用方法Linux下的网络HOOK实现以及使用方法