Ubuntu Server 常用管理

1.重启网络服务:

sudo /etc/init.d/networking restart

或者:

service networking restart

2.设置Nameserver(2种方法):

  • 修改/etc/resolv.conf,但此文件会被resolvconf重写,故应该修改resolvconf配置文件/etc/resolvconf/resolv.conf.d/head, 增加:nameserver 202.96.209.133
  • 修改/etc/network/interfaces,DNS对应的参数名为dns-nameservers,这里设置的优先级比上一种方法高。如果两种方法都设置了,则都会出现在/etc/resolv.conf中。

3.将用户加入 group:

usermod -G groupname username (这种会把用户从其他组中去掉,只属于该组)
如:usermod -G git git (git只属于git组)

usermod -a -G groupname username (把用户添加到这个组,之前所属组不影响)
如:usermod -a -G www git (git属于之前git组,也属于www组)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
xxx@xxxx:~$ cat /etc/group|grep user1
user1:x:999:user1
xxx@xxxx:~$ cat /etc/group|grep sudo
sudo:x:27:
xxx@xxxx:~$ usermod -G 27 user1
xxx@xxxx:~$ cat /etc/group|grep sudo
sudo:x:27:user1
xxx@xxxx:~$ cat /etc/group|grep user1
user1:x:999:
xxx@xxxx:~$ usermod -a -G 999 user1
xxx@xxxx:~$ cat /etc/group|grep user1
user1:x:999:user1
xxx@xxxx:~$ cat /etc/group|grep sudo
sudo:x:27:user1
1
xxx@xxxx:~$ useradd -r -m -s /bin/bash -G 27 test1 

4.修改时区和时间:

  1. 首先查看时区:

    1
    2
    redtux@redtux-PC:~$ date -R
    Thu, 31 May 2018 00:03:22 +0800
  2. 修改时区,执行sudo tzselect,按提示选择时区.

  3. 复制文件到/etc目录下 sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

  4. 更新时间 sudo ntpdate time.windows.com

5.搜索文件夹并删除

1
find ./* -name "@eaDir" -type d -print0 | xargs -0 rm -rf

6.gdisk硬盘分区工具

gdisk是fdisk分区工具的GPT版,MBR分区格式只能支持最大2T的硬盘,大于2T的硬盘必须采用GPT格式,gdisk就是针对GPT格式的升级版。

gdisk

  -l /dev/sdX 查看分区信息

gdisk

  (?|m) 帮助

  n 建立分区

  d 删除分区

  c 更改分区名字

  I 显示分区的详细信息

  p 显示分区信息

  t 转换分区类型

  a 将指定分区设置/取消 活动分区

  l 查看分区类型

  o 重建分区表

  v 验证分区表,显示剩余没有被分区划分的扇区数量

  q 退出不保存,不保存,所有的修改都不生效

  w 退出并保存

执行gdisk /dev/sdx对sdx硬盘进行编辑,分区表编辑完成保存后,需要重新启动系统,否则系统内核还不知道硬盘分区已经改变了,这个时候你ls /dev/sd*查看到的分区情况还是编辑之前的。或者可以先执行partprobe命令试一下看系统是否检测到硬盘分区的变化。

7.blkid 列出所有分区的uuid

硬盘根据插拔接口顺序不同可能是sda,也可能是sdb,这样重启后会不能正确的挂载所有的硬盘,为解决这个问题,UUID被文件系统设计者采用,使其可以持久唯一标识一个硬盘分区。其实方式很简单,就是在文件系统的超级块中使用128位存放UUID。这个UUID是在使用文件系统格式化分区时计算生成的,例如Linux下的文件系统工具mkfs就在格式化分区的同时,生成UUID并把它记录到超级块的固定区域中。

使用mkfs对分区格式化后,会显示分区的uuid,如果我们没有记录下来后面怎么查呢,这个就要用到blkid工具了,他可以列出系统中所有硬盘分区的uuid。

8.rsync 远程同步工具

rsync 是一个常用的 Linux 应用程序,用于文件同步。

它可以在本地计算机与远程计算机之间,或者两个本地目录之间同步文件(但不支持两台远程计算机之间的同步)。它也可以当作文件复制工具,替代cp和mv命令。

它名称里面的r指的是 remote,rsync 其实就是”远程同步”(remote sync)的意思。与其他文件传输工具(如 FTP 或 scp)不同,rsync 的最大特点是会检查发送方和接收方已有的文件,仅传输有变动的部分(默认规则是文件大小或修改时间有变动)。

用法参考文章

-r 参数

本机使用 rsync 命令时,可以作为cp和mv命令的替代方法,将源目录同步到目标目录。

1
$ rsync -r source destination

上面命令中,-r表示递归,即包含子目录。注意,-r是必须的,否则 rsync 运行不会成功。source目录表示源目录,destination表示目标目录。

如果有多个文件或目录需要同步,可以写成下面这样。

1
$ rsync -r source1 source2 destination

上面命令中,source1、source2都会被同步到destination目录。

-a 参数

-a参数可以替代-r,除了可以递归同步以外,还可以同步元信息(比如修改时间、权限等)。由于 rsync 默认使用文件大小和修改时间决定文件是否需要更新,所以-a比-r更有用。下面的用法才是常见的写法。

1
$ rsync -a source destination

目标目录destination如果不存在,rsync 会自动创建。执行上面的命令后,源目录source被完整地复制到了目标目录destination下面,即形成了destination/source的目录结构。

如果只想同步源目录source里面的内容到目标目录destination,则需要在源目录后面加上斜杠。

1
$ rsync -a source/ destination

上面命令执行后,source目录里面的内容,就都被复制到了destination目录里面,并不会在destination下面创建一个source子目录。

-n 参数

如果不确定 rsync 执行后会产生什么结果,可以先用-n或–dry-run参数模拟执行的结果。

1
$ rsync -anv source/ destination

上面命令中,-n参数模拟命令执行的结果,并不真的执行命令。-v参数则是将结果输出到终端,这样就可以看到哪些内容会被同步。

–delete 参数

默认情况下,rsync 只确保源目录的所有内容(明确排除的文件除外)都复制到目标目录。它不会使两个目录保持相同,并且不会删除文件。如果要使得目标目录成为源目录的镜像副本,则必须使用–delete参数,这将删除只存在于目标目录、不存在于源目录的文件。

1
$ rsync -av --delete source/ destination

上面命令中,–delete参数会使得destination成为source的一个镜像。

–exclude 参数

有时,我们希望同步时排除某些文件或目录,这时可以用–exclude参数指定排除模式。

1
2
3
$ rsync -av --exclude='*.txt' source/ destination
# 或者
$ rsync -av --exclude '*.txt' source/ destination

上面命令排除了所有 TXT 文件。

注意,rsync 会同步以”点”开头的隐藏文件,如果要排除隐藏文件,可以这样写–exclude=”.*”。

如果要排除某个目录里面的所有文件,但不希望排除目录本身,可以写成下面这样。

1
$ rsync -av --exclude 'dir1/*' source/ destination

多个排除模式,可以用多个–exclude参数。

1
$ rsync -av --exclude 'file1.txt' --exclude 'dir1/*' source/ destination

多个排除模式也可以利用 Bash 的大扩号的扩展功能,只用一个–exclude参数。

1
$ rsync -av --exclude={'file1.txt','dir1/*'} source/ destination

如果排除模式很多,可以将它们写入一个文件,每个模式一行,然后用–exclude-from参数指定这个文件。

1
$ rsync -av --exclude-from='exclude-file.txt' source/ destination

–include 参数

–include参数用来指定必须同步的文件模式,往往与–exclude结合使用。

1
$ rsync -av --include="*.txt" --exclude='*' source/ destination

上面命令指定同步时,排除所有文件,但是会包括 TXT 文件。

增量备份

rsync 的最大特点就是它可以完成增量备份,也就是默认只复制有变动的文件。

除了源目录与目标目录直接比较,rsync 还支持使用基准目录,即将源目录与基准目录之间变动的部分,同步到目标目录。

具体做法是,第一次同步是全量备份,所有文件在基准目录里面同步一份。以后每一次同步都是增量备份,只同步源目录与基准目录之间有变动的部分,将这部分保存在一个新的目标目录。这个新的目标目录之中,也是包含所有文件,但实际上,只有那些变动过的文件是存在于该目录,其他没有变动的文件都是指向基准目录文件的硬链接。

–link-dest参数用来指定同步时的基准目录。

1
$ rsync -a --delete --link-dest /compare/path /source/path /target/path

上面命令中,–link-dest参数指定基准目录/compare/path,然后源目录/source/path跟基准目录进行比较,找出变动的文件,将它们拷贝到目标目录/target/path。那些没变动的文件则会生成硬链接。这个命令的第一次备份时是全量备份,后面就都是增量备份了。

下面是一个脚本示例,备份用户的主目录。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash

# A script to perform incremental backups using rsync

set -o errexit
set -o nounset
set -o pipefail

readonly SOURCE_DIR="${HOME}"
readonly BACKUP_DIR="/mnt/data/backups"
readonly DATETIME="$(date '+%Y-%m-%d_%H:%M:%S')"
readonly BACKUP_PATH="${BACKUP_DIR}/${DATETIME}"
readonly LATEST_LINK="${BACKUP_DIR}/latest"

mkdir -p "${BACKUP_DIR}"

rsync -av --delete \
"${SOURCE_DIR}/" \
--link-dest "${LATEST_LINK}" \
--exclude=".cache" \
"${BACKUP_PATH}"

rm -rf "${LATEST_LINK}"
ln -s "${BACKUP_PATH}" "${LATEST_LINK}"

上面脚本中,每一次同步都会生成一个新目录${BACKUP_DIR}/${DATETIME},并将软链接${BACKUP_DIR}/latest指向这个目录。下一次备份时,就将${BACKUP_DIR}/latest作为基准目录,生成新的备份目录。最后,再将软链接${BACKUP_DIR}/latest指向新的备份目录。

Udisk 管理工具

udisksctl: The udisks command line tool

udisksctl status
udisksctl info {–object-path OBJECT | –block-device DEVICE | –drive DRIVE}
udisksctl mount {–object-path OBJECT | –block-device DEVICE} [–filesystem-type TYPE] [–options OPTIONS…] [–no-user-interaction]
udisksctl unmount {–object-path OBJECT | –block-device DEVICE} [–force] [–no-user-interaction]
udisksctl unlock {–object-path OBJECT | –block-device DEVICE} [–no-user-interaction] [–key-file PATH] [–read-only]
udisksctl lock {–object-path OBJECT | –block-device DEVICE} [–no-user-interaction]
udisksctl loop-setup –file PATH [–read-only] [–offset OFFSET] [–size SIZE] [–no-user-interaction]
udisksctl loop-delete {–object-path OBJECT | –block-device DEVICE} [–no-user-interaction]
udisksctl power-off {–object-path OBJECT | –block-device DEVICE} [–no-user-interaction]
udisksctl smart-simulate –file PATH {–object-path OBJECT | –block-device DEVICE} [–no-user-interaction]
udisksctl monitor
udisksctl dump
udisksctl help

命令手册

完全卸载U盘

1
udisksctl power-off --block-device /dev/sdx
作者

redtux

发布于

2023-08-18

更新于

2023-09-20

许可协议

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

评论

You forgot to set the shortname for Disqus. Please set it in _config.yml.