Linux文件目录管理
LInux文件目录:文件传输
## scp命令:加密的方式在本地主机和远程主机之间复制文件 - 用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。 - 语法:scp(选项)(参数) - 选项 - -1:使用ssh协议版本1; - -2:使用ssh协议版本2; - -4:使用ipv4; - -6:使用ipv6; - -B:以批处理模式运行; - -C:使用压缩; - -F:指定ssh配置文件; - -i:identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh; - -l:指定宽带限制; - -o:指定使用的ssh选项; - -P:指定远程主机的端口号; - -p:保留文件的最后修改时间,最后访问时间和权限模式; - -q:不显示复制进度; - -r:以递归方式复制。 - 参数 源文件:指定要复制的源文件。 目标文件:目标文件。格式为user@host:filename(文件名为目标文件的名称)。 - 实例: ```shell #从远程机器复制 文件 到本地 scp root@10.10.10.10:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/ #从远程机器复制 目录 到本地 scp -r root@10.10.10.10:/opt/soft/mongodb /opt/soft/ #上传本地 文件 到远程机器指定目录 scp /opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/opt/soft/scptest #上传本地 目录 到远程机器指定目录 scp -r /opt/soft/mongodb root@10.10.10.10:/opt/soft/scptest scp -rp -P 2222 /opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/opt/soft/scptest # 指定端口 2222 ``` ## rcp命令: 使在两台Linux主机之间的文件复制操作更简单 - 通过适当的配置,在两台Linux主机之间复制文件而无需输入密码,就像本地文件复制一样简单。 - 语法:rcp(选项)(参数) - 选项 -p:保留源文件或目录的属性,包括拥有者、所属群组、权限与时间; -r:递归处理,将指定目录下的文件与子目录一并处理; -x:加密两台Linux主机间传送的所有信息。 -D:指定远程服务器的端口号。 - 参数 源文件:指定要复制的源文件。源文件可以有多个。 - 同名用户的主目录。如果没有给出远程用户名,就使用当前用户名。如果远程机上的路径包含特殊shell字符,需要用反斜线\\、双引号""或单引号''括起来,使所有的shell元字符都能被远程地解释。需要说明的是,rcp不提示输入口令,它通过rsh命令来执行拷贝。 - directory 每个文件或目录参数既可以是远程文件名也可以是本地文件名。远程文件名具有如下形式rname@rhost:path,其中rname是远程用户名,rhost是远程计算机名,path是这个文件的路径。 - 配置过程: 1. 如果系统中有/etc/hosts文件,系统管理员应确保该文件包含要与之进行通信的远程主机的项。 2. 在双方root用户根目录下建立rhosts文件,并将双方的hostname加进去。在此之前应在双方的/etc/hosts文件中加入对方的ip和hostname 3. 把rsh服务启动起来,redhat默认是不启动的。方法:用执行ntsysv命令,在rsh选项前用空格键选中,确定退出。然后执行service xinetd restart即可。 4. 到/etc/pam.d/目录下,把rsh文件中的auth required /lib/security/pam_securetty.so一行用“#”注释掉即可。(只有注释掉这一行,才能用root用户登录) - 实例 ```shell #将当前目录下的 test1 复制到名为 webserver1 的远程系统: rcp test1 webserver1:/home/root/test3 #将远程系统 webserver1中的 test2 复制到当前目录: rcp webserver1:/home/root/test2 .Enter //.是“当前目录”的简写形式 #如果希望用其他文件名将文件复制到其他目录下: rcp webserver1:/home/root/test2 otherdir/otherfile Enter #要将名为 work 的远程目录复制到当前目录: rcp –r webserver1:/home/root/work .Enter //.是“当前目录”的简写形式 ``` ## rsync命令 :远程数据同步工具 - 使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 - 语法 - rsync [OPTION]... SRC DEST - rsync [OPTION]... SRC [USER@]host:DEST - rsync [OPTION]... [USER@]HOST:SRC DEST - rsync [OPTION]... [USER@]HOST::SRC DEST - rsync [OPTION]... SRC [USER@]HOST::DEST - rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST] - 对应于以上六种命令格式,rsync有六种不同的工作模式: 1. 拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -a /data /backup 2. 使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c foo:src 3. 使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz foo:src/bar /data 4. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:rsync -av root@192.168.78.192::www /databack 5. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /databack root@192.168.78.192::www 6. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://192.168.78.192/www - 选项 - -a, 归档模式,并保持所有文件属性 - -b, 创建备份,将老的文件重新命名为~filename。 - -\-backup-dir 将备份文件(如~filename)存放在在目录下。 - -B, 检验算法使用的块尺寸,默认是700字节。 - -c, 打开校验开关,强制对文件传输进行校验。 - -C, 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件。 - -D, 保持设备文件信息。 - -\-delete 删除那些DEST中SRC没有的文件。 - -\-delete-excluded 同样删除接收端那些被该选项指定排除的文件。 - -\-delete-after 传输结束以后再删除。 - -e, 指定使用rsh、ssh方式进行数据同步。 - -\-exclude=PATTERN 指定排除不需要传输的文件模式。 - -\-exclude-from=FILE 排除FILE中指定模式的文件。 - -\-existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件。 - -g, 保持文件属组信息。 - -H, 保留硬链结。 - -I, 不跳过那些有同样的时间和长度的文件。 - -\-ignore-errors 及时出现IO错误也进行删除。 - -\-include=PATTERN 指定不排除而需要传输的文件模式。 - -\-include-from=FILE 不排除FILE指定模式匹配的文件。 - -l, 保留软链结。 - -L, -想对待常规文件一样处理软链结。 - -n, 现实哪些文件将被传输。 - -o, 保持文件属主信息。 - -q, 精简输出模式。 - -p, 保持文件权限。 - -\-progress 显示备份过程。 - -r, 对子目录以递归模式处理。 - -R, 使用相对路径信息。 - -S, 对稀疏文件进行特殊处理以节省DST的空间。 - -stats 给出某些文件的传输状态。 - -suffix=SUFFIX 定义备份文件前缀。 - -t, 保持文件时间信息。 - -T, 在DIR中创建临时文件。 - -u, 仅仅进行更新,并且文件时间晚于要备份的文件,不覆盖更新的文件。 - -v, 详细模式输出。 - -w, 拷贝文件,不进行增量检测。 - -x, 不要跨越文件系统边界。 - -z, 对备份的文件在传输时进行压缩处理。 - -\-address 绑定到特定的地址。 - -\-bwlimit=KBPS 限制I/O带宽,KBytes per second。 - -\-blocking-io 对远程shell使用阻塞IO。 - -\-config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件。 - --\copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结。 - --\compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份。 - -\-numeric-ids 不将数字的用户和组id匹配为用户名和组名。 - -\-force 强制删除目录,即使不为空。 - -\-log-format=formAT 指定日志文件格式。 - -\-modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0。 - -\-max-delete=NUM 最多删除NUM个文件。 - -\-port=PORT 指定其他的rsync服务端口。 - -\-password-file=FILE 从FILE中得到密码。 - -\-partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输。 - -\-rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息。 - --\safe-links 忽略指向SRC路径目录树以外的链结。 - --\size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间。 - -\-timeout=time ip超时时间,单位为秒。 实例 ```shell #启动ssh服务 service sshd start rsync -avz --progress --delete work@172.16.78.192::www /databack/experiment/rsync rsync -avz --progress /databack/experiment/rsync/ work@172.16.78.192::www rsync -r source destination #将源目录同步到目标目录. rsync -r source1 source2 destination #多个文件或目录同步 rsync -a source destination #-a 参数除了可以递归同步以外,还可以同步元信息 rsync -a source/ destination #如果只想同步源目录 source 里面的内容,则需要在后面加上斜杠 rsync -anv source/ destination #如果不确定会产生什么结果可以先用-n参数模拟命令执行的结果,并不真的执行命令 rsync -av --delete source/ destination #删除只存在于目标目录、不存在于源目录的文件。 ##########==============>排除某些文件或目录 #所有 TXT 文件 rsync -av --exclude='*.txt' source/ destination rsync -av --exclude '*.txt' source/ destination #排除某个目录里面的所有文件,但不希望排除目录本身 rsync -av --exclude 'dir1/*' source/ destination #多个排除模式,可以用多个 --exclude 参数 rsync -av --exclude 'file1.txt' --exclude 'dir1/*' source/ destination rsync -av --exclude={'file1.txt','dir1/*'} source/ destination #如果排除模式很多,可以将它们写入一个文件,每个模式一行,然后用 --exclude-from 参数指定这个文件 rsync -av --exclude-from='exclude-file.txt' source/ destination ##########==============>指定必须同步的文件模式 #必须同步 TXT 文件 rsync -av --include="*.txt" source/ destination #与 --exclude 结合使用, 排除所有文件,但是会包括 TXT 文件 rsync -av --include="*.txt" --exclude='*' source/ destination ``` - 后台服务方式 - 启动rsync服务,编辑/etc/xinetd.d/rsync文件,将其中的disable=yes改为disable=no,并重启xinetd服务, ```shell vi /etc/xinetd.d/rsync ....... :wq /etc/init.d/xinetd restart ``` - 创建配置文件,默认安装好rsync程序后,并不会自动创建rsync的主配置文件,需要手工来创建,其主配置文件为“/etc/rsyncd.conf”,创建该文件并插入如下内容: ```shell vi /etc/rsyncd.conf uid=root gid=root max connections=4 log file=/var/log/rsyncd.log pid file=/var/run/rsyncd.pid lock file=/var/run/rsyncd.lock secrets file=/etc/rsyncd.passwd hosts deny=172.16.78.0/22 [www] comment= backup web path=/www read only = no exclude=test auth users=work ``` - 创建密码文件,采用这种方式不能使用系统用户对客户端进行认证,所以需要创建一个密码文件,其格式为“username:password”,用户名可以和密码可以随便定义,最好不要和系统帐户一致,同时要把创建的密码文件权限设置为600 ```shell echo "work:abc123" > /etc/rsyncd.passwd chmod 600 /etc/rsyncd.passwd ``` - 完成以上工作,现在就可以对数据进行备份了 ## ftp命令:用来设置文件系统相关功能 - 语法:ftp [-dignv][主机名称或IP地址][PORT] - 选项 - -d:详细显示指令执行过程,便于排错或分析程序执行的情况; - -i:关闭互动模式,不询问任何问题; - -g:关闭本地主机文件名称支持特殊字符的扩充特性; - -n:不使用自动登录; - -v:显示指令执行过程。 - 参数 主机:指定要连接的FTP服务器的主机名或ip地址。 - 指令: ```shell ftp> ascii # 设定以ASCII方式传送文件(缺省值) ftp> bell # 每完成一次文件传送,报警提示. ftp> binary # 设定以二进制方式传送文件. ftp> bye # 终止主机FTP进程,并退出FTP管理方式. ftp> case # 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母. ftp> cd # 同UNIX的CD命令. ftp> cdup # 返回上一级目录. ftp> chmod # 改变远端主机的文件权限. ftp> close # 终止远端的FTP进程,返回到FTP命令状态, 所有的宏定义都被删除. ftp> delete # 删除远端主机中的文件. ftp> dir [remote-directory] [local-file] # 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件. ftp> get [remote-file] [local-file] # 从远端主机中传送至本地主机中. ftp> help [command] # 输出命令的解释. ftp> lcd # 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录. ftp> ls [remote-directory] [local-file] # 同DIR. ftp> macdef # 定义宏命令. ftp> mdelete [remote-files] # 删除一批文件. ftp> mget [remote-files] # 从远端主机接收一批文件至本地主机. ftp> mkdir directory-name # 在远端主机中建立目录. ftp> mput local-files # 将本地主机中一批文件传送至远端主机. ftp> open host [port] # 重新建立一个新的连接. ftp> prompt # 交互提示模式. ftp> put local-file [remote-file] # 将本地一个文件传送至远端主机中. ftp> pwd # 列出当前远端主机目录. ftp> quit # 同BYE. ftp> recv remote-file [local-file] # 同GET. ftp> rename [from] [to] # 改变远端主机中的文件名. ftp> rmdir directory-name # 删除远端主机中的目录. ftp> send local-file [remote-file] # 同PUT. ftp> status # 显示当前FTP的状态. ftp> system # 显示远端主机系统类型. ftp> user user-name [password] [account] # 重新以别的用户名登录远端主机. ftp> ? [command] # 同HELP. [command]指定需要帮助的命令名称。如果没有指定 command,ftp 将显示全部命令的列表。 ftp> ! # 从 ftp 子系统退出到外壳。 ``` - 注意:需要使用ftp登录服务器后才能进行上面的指令 - 实例 ```shell #FTP 匿名登录账号密码 账号:anonymous 密码: anonymous@ #关闭FTP连接 bye exit quit #下载文件 ftp> get readme.txt # 下载 readme.txt 文件 ftp> mget *.txt # 下载 #上传文件 ftp> put /path/readme.txt # 上传 readme.txt 文件 ftp> mput *.txt # 可以上传多个文件 ``` ## ncftp 是增强的的FTP工具 - 语法:ncftp(选项)(参数) - 选项 - -u:指定登录FTP服务器时使用的用户名; - -p:指定登录FTP服务器时使用的密码; - -P:如果FTP服务器没有使用默认的TCP协议的21端口,则使用此选项指定FTP服务器的端口号。 - -m:在传之前尝试在目录位置创建目录(用于传目录的情况) - -R:递规传子目录 - 参数 FTP服务器:指定远程FTP服务器的ip地址或主机名。 - 安装 ```shell wget ftp://ftp.ncftp.com/ncftp/ncftp-3.2.3-src.tar.gz tar zxvf ncftp-3.2.3-src.tar.gz cd ncftp-3.2.3/ ./configure --prefix=/usr/local/ncftp make && make install ``` - 指令:除了ftp的指令外,还增加的本地文件系统的操作指令 - lls: 列出本地当前目录文件; - lmkdir : 本地建立目录; - lrename: 本地文件改名; - lpwd: 显示当前本地路 径; - lchmod: 改变本地文件权限; - lpage: 显示本地文件内容; - lrm: 删除本地文件; - lrmdir: 删除本地目录。
顶部
收展
底部
[TOC]
目录
Linux文件目录:增删改查命令
Linux文件目录:权限管理
Linux文件目录:文件搜索
Linux文件目录:文件比较
Linux文件目录:过滤分割合并
LInux文件目录:文件传输
Rsync同步过程中遇到的常见问题
相关推荐
Linux打包压缩
Linux文本处理
Linux软件安装
Linux用户和用户组管理
Linux文件系统管理
Linux系统管理