目录
cp 复制命令
tar 压缩命令
split 切分文件命令
scp 数据传输命令
df 查看硬盘空间状态
du 查看指定文件夹
wc 统计命令
cp 复制命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| 在linux中怎样用命令完全拷贝一个目录下的所有文件(包括隐藏文件以及文件夹)到另外一个目录下,并且使得被复制的所有文件的属性等完全保持不变? 注意,连原来的文件夹中所有的文件的属性、链接等都不能更改。也就是说,要建立原来文件夹的一份一模一样的拷贝!&n
在linux中怎样用命令完全拷贝一个目录下的所有文件(包括隐藏文件以及文件夹)到另外一个目录下,并且使得被复制的所有文件的属性等完全保持不变? 注意,连原来的文件夹中所有的文件的属性、链接等都不能更改。 也就是说,要建立原来文件夹的一份一模一样的拷贝!
# cp -avx /home/* /mnt/newhome
功能: 复制文件或目录 说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息 参数: -a 或 --archive 此参数的效果和同时指定"-dpR"参数相同 -b 或 --backup 删除、覆盖目的文件先备份,备份的文件或目录亦建立为符号链接,并指向源文件或目录链接的源文件或目录。假如没有加上这个参数,在复制过程中若遇到符号链接,则会直接复制源文件或目录 -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在 -i 或 --interactive 覆盖文件之前先询问用户 -l 或 --link 对源文件建立硬链接,而非复制文件 -p 或 --preserve 保留源文件或目录的属性,包括所有者、所属组、权限与时间 -P 或 --parents 保留源文件或目录的路径,此路径可以是绝对路径或相对路径,且目的目录必须已经丰在 -r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理 -R 或 --recursive 递归处理,将指定目录下的文件及子目录一并处理 -s 或 --symbolic-link 对源文件建立符号链接,而非复制文件 -S <备份字尾字符串> 或 --suffix=<备份字尾字符串> 用"-b"参数备份目的文件后,备份文件的字尾会被加上一个备份字符串。默认的备份字尾符串是符号"~" -u 或 --update 使用这项参数之后,只会在源文件的修改时间(Modification Time)较目的文件更新时,或是名称相互对应的目的文件并不存在,才复制文件 -v 或 --verbose 显示执行过程 -V <备份方式> 或 --version-control=<备份方式> 指定当备份文件时,备份文件名的命名方式,有以下3种: 1.numbered或t, 将使用备份编号,会在字尾加上~1~字符串,其数字编号依次递增 2.simple或never 将使用简单备份,默认的备份字尾字符串是~, 也可通过-S来指定 3.existing或nil将使用当前方式,程序会先检查是否存在着备份编号,若有则采用备份编号,若无则采用简单备份 -x 或 --one-file-system 复制的文件或目录存放的文件系统,必须与cp指令执行时所处的文件系统相同,否则不复制,亦不处理位于其他分区的文件 --help 显示在线帮助 --sparse=<使用时机> 设置保存希疏文件的时机 --version 显示版本
示例: .复制文件,只有源文件较目的文件的修改时间新时,才复制文件 cp -u -v file1 file2
.将文件file1复制成文件file2 cp file1 file2
.采用交互方式将文件file1复制成文件file2 cp -i file1 file2
.将文件file1复制成file2,因为目的文件已经存在,所以指定使用强制复制的模式 cp -f file1 file2
.将目录dir1复制成目录dir2 cp -R file1 file2
.同时将文件file1、file2、file3与目录dir1复制到dir2 cp -R file1 file2 file3 dir1 dir2
.复制时保留文件属性 cp -p a.txt tmp/
.复制时保留文件的目录结构 cp -P /var/tmp/a.txt ./temp/
.复制时产生备份文件 cp -b a.txt tmp/
.复制时产生备份文件,尾标 ~1~格式 cp -b -V t a.txt /tmp
.指定备份文件尾标 cp -b -S _bak a.txt /tmp
|
tar 压缩命令
分卷压缩
举例:将10G大小的log文件2017.log打包压缩并分割成多个100m的文件
1 2 3 4 5 6
| # 分卷压缩gz # tar zcf - 2017.log |split -d -b 100m - logs.tar.gz. # 生成文件: logs.tar.gz.00 logs.tar.gz.01 # 分卷压缩bz2 # tar jcf - 2017.log |split -d -b 100m - logs.tar.bz2. # 生成文件: logs.tar.bz2.00 logs.tar.bz2.01
|
最后要提醒但是那两个”-”不要漏了,那是tar的ouput和split的input的参数
合并分卷解压缩
1 2 3 4
| # 解压gz分卷 # cat logs.tar.gz* | tar zx # 解压bz2分卷 # cat logs.tar.gz* | tar jx
|
tar 命令简述
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| 参数: -j : 通过bzip2进行压缩\解压文件*.tar.bz2 -z : 通过gzip进行压缩\解压文件*.tar.gz -c : 新建打包文件,可搭配-v来查看过程中被打包的文件名 -t : 查看打包文件的内容有哪些文件名 -x : 解压打包文件. -v : 在压缩/解压过程中,显示正在处理的文件名 -f : -f后面接被处理的文件名 -C(大写) : 后接目录 -p : 保留备份数据的原本权限与属性 -P : 保留绝对路径,即允许备份数据中含有根目录存在的目录(危险) 常用:欲压缩或打包的文件或目录(/*) bzip2压缩命令:tar -jcv -f boot.tar.bz2 /boot gzip压缩命令 :tar -zcv -f boot.tar.gz /boot bzip2查看命令:tar -jtv -f /dir/*.tar.bz2 gzip 查看命令:tar -ztv -f /dir/*.tar.gz bzip2解压缩命令:tar -jxv -f /dir/*.tar.bz2 -C 欲解压缩的目录 gzip解压缩命令 :tar -zxv -f /dir/*.tar.gz 欲解压缩的目录 特殊: 备份重要的系统数据,包括其完整的权限(-p参数): tar -jcvp -f /root/etc.tar.bz2 /etc 只解压压缩文件内的其中一个文件: tar -jxv -f /root/etc.tar.bz2 etc/shadow 打包目录,但不含该目录下的某些文件(--exclude): tar -jcv -f /root/system.tar.bz2 --exclude=root/etc* --exclude=root/system.tar.bz2 /etc /root 仅备份比某个时刻还要新的文件: 备份 :tar -jcv -f /root/etc.newer.2011.02.16.tar.bz2 –newer-mtime='2011-02-16' /etc/* 查看备份:tar -jtv -f etc.newer.2011.02.16.tar.bz2 注意:在备份文件的时候也备份它的父目录
|
split 切分文件命令
功能说明:切割文件。
语法:
1
| split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名
|
补充说明:split可将文件切成较小的文件,预设每1000行会切成一个小文件。
参数:
-<行数>或-l<行数> 指定每多少行就要切成一个小文件。
-b<字节> 指定每多少字就要切成一个小文件。支持单位:m,k
-C<字节> 与-b参数类似,但切割时尽量维持每行的完整性。
–help 显示帮助。
–version 显示版本信息。
[输出文件名] 设置切割后文件的前置文件名,split会自动在前置文件名后再加上编号。
例子:
1.按100KB的测试文件拆分
1 2 3
| # split -b 10k date.file # ls date.file xaa xab xac xad xae xaf xag xah xai xaj
|
件被分割成多个带有字母的后缀文件,如果想用数字后缀可使用-d参数,同时可以使用-a length来指定后缀的长度:
1 2 3
| # split -b 10k date.file -d -a 3 # ls date.file x000 x001 x002 x003 x004 x005 x006 x007 x008 x009
|
为分割后的文件指定文件名的前缀:
1 2 3
| # split -b 10k date.file -d -a 3 split_file # ls date.file split_file000 split_file001 split_file002 split_file003 split_file004 split_file005 split_file006 split_file007 split_file008 split_file009
|
2.按行数拆分
scp 数据传输命令
语法:
1 2 3
| scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 [...] [[user@]host2:]file2
|
参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| -1: 强制scp命令使用协议ssh1 -2: 强制scp命令使用协议ssh2 -4: 强制scp命令只使用IPv4寻址 -6: 强制scp命令只使用IPv6寻址 -B: 使用批处理模式(传输过程中不询问传输口令或短语) -C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能) -p:保留原文件的修改时间,访问时间和访问权限。 -q: 不显示传输进度条。 -r: 递归复制整个目录。 -v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。 -c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。 -F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。 -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。 -l limit: 限定用户所能使用的带宽,以Kbit/s为单位。 -o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式, -P port:注意是大写的P, port是指定数据传输用到的端口号 -S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
|
使用
从远端下载到本地
注意: 秘钥文件权限必须是600
1 2 3 4
| 格式: scp -r -i [秘钥文件路径] -P [远端端口] -l [限速速度(kb/s)] [远端用户]@[远端IP]:[远端文件] [本地路径] 例如: scp -r -v -p -i /home/ubuntu/file/id_rsa_2048 -P 22 -l 1000 [用户名]@[IP]:/home/xxx/windowsfonts /home/ubuntu/file
|
从本地推送到远端
1 2 3 4
| 格式: scp -r -i [秘钥文件路径] -P [远端端口] -l [限速速度(kb/s)] [本地上传文件路径] [远端用户]@[远端IP]:[远端保存路径] 例如: scp -i /home/ubuntu/file/id_rsa_2048 -P 22 -l 1000 /home/ubuntu/file/TeamCity-2020.1.5.tar.gz [用户名]@[IP]:/home/xxx
|
即从远端下载数据可以用如下命令
1
| echo [秘钥文件密码] | scp -i /home/ubuntu/file/id_rsa_2048 -P 22 -l 1000 /home/ubuntu/file/TeamCity-2020.1.5.tar.gz [用户名]@[IP]:/home/xxx
|
前提:
设置时区:
1
| sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
df 查看硬盘空间状态
df -h
1 2 3 4 5 6 7 8 9 10 11 12
| Filesystem Size Used Avail Use% Mounted on udev 3.9G 0 3.9G 0% /dev tmpfs 786M 84M 702M 11% /run /dev/vda1 50G 37G 9.7G 80% / tmpfs 3.9G 24K 3.9G 1% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup tmpfs 786M 0 786M 0% /run/user/500 /dev/vdb 99G 60M 94G 1% /var/www/Daily_Backup 172.17.0.12:/ 1.1T 498G 563G 47% /var/www/Cloud_CFS tmpfs 786M 0 786M 0% /run/user/1009
|
du 查看指定文件夹
参数详解
- -s:对每个Names参数只给出占用的数据块总数。
- -a:递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。
- -b:以字节为单位列出磁盘空间使用情况(系统默认以k字节为单位)。
- -k:以1024字节为单位列出磁盘空间使用情况。
- -c:最后再加上一个总计(系统默认设置)。
- -l:计算所有的文件大小,对硬链接文件,则计算多次。
- -x:跳过在不同文件系统上的目录不予统计。
- -h:以K,M,G为单位,提高信息的可读性。
查看指定文件夹大小
sudo du -sh /var/www/
查看当前目录大小
du -sh
指定深度
du -h / --max-depth=1
排序
du -h / --max-depth=1|sort -n
前几个
du -h / --max-depth=1|sort -n|head -5
根目录文件夹大小
sudo du -sh /*
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| 16M /bin 751M /boot 4.0K /data 0 /dev 160M /etc 1.8G /home 0 /initrd.img 0 /initrd.img.old 3.5G /lib 4.0K /lib64 16K /lost+found 8.0K /media 4.0K /mnt 47M /opt 0 /proc 199M /root 84M /run 13M /sbin 4.0K /spare 4.0K /srv 0 /sys 1.7G /tmp 3.6G /usr 523G /var 0 /vmlinuz 0 /vmlinuz.old
|
wc 统计命令
统计文件个数
1 2
| ls -lR | grep "^-" |wc -l ls -lR | grep "^d" | wc -l
|