linux的一些日常使用命令总结

一只会飞的鱼儿 2月前 ⋅ 424 阅读
ad

一、文件复制

在 Linux 中,复制文件是一个常见的操作,通常使用 cp 命令来完成。cp 命令提供了丰富的选项来满足不同的需求。下面是使用 cp 命令复制文件的一些基本用法和示例。

基本用法

cp 命令的基本语法如下:

cp [选项] 源文件 目标文件或目录

常用选项

  • -i:交互模式,在覆盖现有文件之前询问用户。
  • -r 或 -R:递归复制目录。
  • -v:详细模式,显示复制的详细信息。
  • -p:保留源文件的属性(权限、时间戳等)。
  • -u:仅在源文件比目标文件新或目标文件不存在时复制。

示例

1. 复制单个文件

/path/to/source-file 复制到 /path/to/destination-file

Sh
cp /path/to/source-file /path/to/destination-file

2. 复制目录

/path/to/source-directory 复制到 /path/to/destination-directory

S
cp -r /path/to/source-directory /path/to/destination-directory

3. 复制多个文件到一个目录

将多个文件复制到一个目录:

Sh
cp file1 file2 file3 /path/to/destination-directory

4. 递归复制目录并保留属性

/path/to/source-directory 复制到 /path/to/destination-directory 并保留所有属性:

Sh
cp -rp /path/to/source-directory /path/to/destination-directory

5. 交互模式下复制文件

在覆盖现有文件之前询问用户:

cp -i /path/to/source-file /path/to/destination-file

6. 详细模式复制文件

显示复制过程中的详细信息:

cp -v /path/to/source-file /path/to/destination-file

7. 仅在文件较新时复制

仅在源文件比目标文件新或目标文件不存在时复制:

cp -u /path/to/source-file /path/to/destination-file

示例脚本

假设你需要编写一个脚本来复制一个文件,并在文件已存在时询问用户是否覆盖:

#!/bin/bash

# 定义源文件和目标文件路径
source_file="/path/to/source-file"
destination_file="/path/to/destination-file"

# 检查目标文件是否存在
if [ -e "$destination_file" ]; then
  read -p "目标文件已存在,是否覆盖?(y/N): " answer
  case "$answer" in
    [Yy]* ) cp -i "$source_file" "$destination_file";;
    * ) echo "未覆盖目标文件。"; exit 0;;
  esac
else
  # 目标文件不存在,直接复制
  cp "$source_file" "$destination_file"
fi

echo "文件复制完成。"

使用其他工具复制文件

除了 cp 命令之外,还有一些其他工具可以用来复制文件,例如 rsync

1. 使用 rsync 命令复制文件

rsync 命令是一个更加强大的文件复制工具,它支持增量复制,即只复制文件中变化的部分,从而节省了大量的时间和带宽。

示例
  1. 复制单个文件

    /path/to/source-file 复制到 /path/to/destination-file

    Sh
    rsync -av /path/to/source-file /path/to/destination-file
  2. 复制目录

     

    /path/to/source-directory 复制到 /path/to/destination-directory

    rsync -av /path/to/source-directory /path/to/destination-directory
  3. 递归复制目录并保留属性

    /path/to/source-directory 复制到 /path/to/destination-directory 并保留所有属性:

    rsync -avz /path/to/source-directory /path/to/destination-directory

    这里的 -z 选项表示启用压缩,可以在远程复制时节省带宽。

使用 tar 命令复制文件

tar 命令主要用于创建和提取存档文件,但它也可以用来复制文件。使用 tar 复制文件的优点是可以一次性复制多个文件,并且可以保留文件属性。

示例

  1. 复制单个文件 

    /path/to/source-file 复制到 /path/to/destination-file

    tar cf - /path/to/source-file | tar xf - -C /path/to/destination-file
  2. 复制目录

    /path/to/source-directory 复制到 /path/to/destination-directory

    tar cf - /path/to/source-directory | tar xf - -C /path/to/destination-directory

    二、文件的压缩和解压

    1、压缩,tar,zip等

    2、解压

    解压文件夹下所有文件的脚本命令

    #!/bin/bash
    
    # 指定包含 .tar文件的目录
    dir="/var/lib/clickhouse/backup/20240829/shadow/webfunny_cloud_db/"
    
    # 遍历目录中的所有 .tar 文件
    for tar_file in $(find "$dir" -type f -name "*.tar"); do
      # 检查文件是否存在
      if [ -f "$tar_file" ]; then
        # 解压每个 .tar 文件
        echo "Extracting $tar_file..."
        result="${tar_file%.tar}"
        aw=$(echo "$tar_file" | awk -F 'default_' '{print $1}')
        a="default"
        #mkdir "$result"
        mkdir "$aw$a"
        tar -xvf "$tar_file" -C "$aw$a"
      else
        echo "File does not exist: $tar_file"
      fi
    done

关于Webfunny

Webfunny专注于前端监控系统,前端埋点系统的研发。 致力于帮助开发者快速定位问题,帮助企业用数据驱动业务,实现业务数据的快速增长。支持H5/Web/PC前端、微信小程序、支付宝小程序、UniApp和Taro等跨平台框架。实时监控前端网页、前端数据分析、错误统计分析监控和BUG预警,第一时间报警,快速修复BUG!支持私有化部署,Docker容器化部署,可支持千万级PV的日活量!

  点赞 0   收藏 0
  • 一只会飞的鱼儿
    共发布53篇文章 获得8个收藏
全部评论: 0