Linux文件和文件夹复制
1、本地复制:
命令:cp
说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。
参数:
-a 尽可能将档案状态、权限等资料都照原状予以复制。
-r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。
-f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。
2、远程传输文件或文件夹
命令:scp
scp是在安全协议下复制和传输文件,基于ssh登录。操作起来比较方便,比如要把当前一个文件copy到远程另外一台主机上,可以如下命令。
scp /home/data root@ip:/home/root
然后会提示你输入另外那台ip主机的root用户的登录密码,接着就开始copy了。
如果想反过来操作,把文件从远程主机copy到当前系统,也很简单。
scp root@ip:/home/root/data /home
文件夹复制是注意递归复制,参数 –r
存在端口情况,命令格式如下:
scp -P 4588 user@IP:/usr/local/sin.sh /home/administrator
3、远程传输大文件
当远程传输的文件或文件夹较大时,中间可能需要断开网络或是终端,这样会导致传输停止。解决由于终端关闭导致的终止情况,通常采用nohup命令后台运行,但是文件远程传输或复制需要输入对方服务器的秘钥,因此需要建立服务器之间的安全信任关系证书。主要使用SSH,一种安全通道协议,主要用于远程登录。
假设需要使用A服务器在不使用密码的情形下从服务器B拷贝文件,步骤如下:
(1)在A服务器生成一对秘钥文件(公钥和私钥)
ssh-keygen
上述命令等价于:
ssh-keygen -rsa
其中,-t指定密钥的类型,默认为SSH-2的rsa类型。生成的秘钥会保存在~/.ssh文件夹下。
运行上面的命令后,系统会出现一系列提示,可以一路回车。特别说明,其中有一个问题是,要不要对私钥设置口令(passphrase),如果担心私钥的安全,可以设置一个。运行结束以后,会在 ~/.ssh/ 目录下新生成两个文件:id_rsa.pub和id_rsa。前者公钥,后者是私钥。
(2)将公钥传送到远程主机B上面
ssh-copy-id -i ~/.ssh/id_rsa.pub -p PORT_B user_B@IP_B
(3)在A上可以使用
nohup scp
从B上进行远程复制