红茶的个人站点

  • 首页
  • 专栏
  • 开发工具
  • 其它
  • 隐私政策
Awalon
Talk is cheap,show me the code.
  1. 首页
  2. 专栏
  3. Linux之旅
  4. 正文

Linux 之旅 20:基础设置与备份

2021年9月11日 1114点热度 0人点赞 0条评论

image-20210910151022138

图源:pexels

系统基础设置

网络设置

网络相关的重要的配置项有以下几个:

  • IP

  • 子网掩码(netmask)

  • 网关(gateway)

  • DNS

网络设置大致可以分为手动设置和DHCP两种,前者需要手动指定上边的配置项,而后者可以通过路由协议自动获取到相关的配置项(对于家庭网络来说,就是依赖于路由器的DHCP功能)。

除此之外,网卡也比较重要,电脑是通过网卡进行网络通信的,而一个设备上可以有多个网卡,所以我们需要根据网卡名称识别不同的网卡设备,在CentOS 7中,不同的网卡命名有以下区分:

  • eno1:板载网卡

  • ens1:板载的PCIE接口网卡

  • enp2s0:外接的PCIE接口网卡,可以有多个插槽,用s0、s1等进行区分

  • eth0:默认的网卡名称

手动设置网络参数

通过nmcli(netwaork manager command-line tool)命令可以查看网络管理的相关信息。

如果要查看当前的网络连接信息:

[icexmoon@xyz ~]$ nmcli connection show
NAME    UUID                                  TYPE      DEVICE
ens33   a4ab5107-023a-427a-8d69-0160a59afb41  ethernet  ens33
virbr0  455880b2-fdcd-4502-81a0-4c9cd0f429a1  bridge    virbr0

这些字段的含义为:

  • NAME:网络连接名称

  • UUID:网卡的UUID

  • TYPE:网络连接类型

  • DEVICE:网卡的设备名称

如果要查看某个连接的详细信息:

[icexmoon@xyz ~]$ nmcli connection show ens33 | grep -E '(ipv4|autoconnect)'
connection.autoconnect:                 是
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.autoconnect-slaves:          -1(default)
ipv4.method:                            manual
ipv4.dns:                               --
ipv4.dns-search:                        --
ipv4.dns-options:                       ""
ipv4.dns-priority:                      0
ipv4.addresses:                         192.168.1.105/24
ipv4.gateway:                           192.168.1.1
ipv4.routes:                            --
ipv4.route-metric:                      -1
ipv4.route-table:                       0 (unspec)
ipv4.routing-rules:                     --
ipv4.ignore-auto-routes:                否
ipv4.ignore-auto-dns:                   否
ipv4.dhcp-client-id:                    --
ipv4.dhcp-timeout:                      0 (default)
ipv4.dhcp-send-hostname:                是
ipv4.dhcp-hostname:                     --
ipv4.dhcp-fqdn:                         --
ipv4.never-default:                     否
ipv4.may-fail:                          是
ipv4.dad-timeout:                       -1 (default)

这里比较重要的信息有:

  • connection.autoconnect:是否开机后自动连接(yes/no)。

  • ipv4.method:IPV4协议的设置方式,如果是manual就是手动设置,如果是auto就是通过DHCP自动设置。

  • ipv4.dns:IPV4协议的DNS(域名解析服务)。

  • ipv4.addresses:IPV4协议的IP地址和子网掩码。

  • ipv4.gateway:IPV4协议的网关(对于家庭网络来说就是路由器的IP)。

同样可以通过nmcli命令修改IPV4协议的相关网络设置:

[root@xyz ~]# nmcli connection modify ens33 \
> connection.autoconnect yes \
> ipv4.method manual \
> ipv4.addresses 192.168.1.106/24 \
> ipv4.gateway 192.168.1.1

当然,这样只是修改配置,还需要重启该网络连接让修改后的配置生效:

[root@xyz ~]# nmcli connection up ens33

如果你和我一样是通过SSH连接的虚拟机,修改IP并生效后会导致终端失连,需要重新用新的IP建立SSH连接:

❯ ssh icexmoon@192.168.1.106
The authenticity of host '192.168.1.106 (192.168.1.106)' can't be established.
ECDSA key fingerprint is SHA256:1QhEZXO0k0317Urj1emTYXg7gkmi1xlgB0hjhQnvTuE.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.1.106' (ECDSA) to the list of known hosts.
icexmoon@192.168.1.106's password:
Last login: Fri Sep 10 15:24:38 2021 from icexmoon-book
[icexmoon@xyz ~]$ nmcli connection show ens33 | grep ipv4.add
ipv4.addresses:                         192.168.1.106/24

自动获取IP

自动获取IP也就是依赖DHCP协议来动态获取IP,我们只需要将IPV4协议中的ipv4.method参数修改为auto即可:

[root@xyz ~]# nmcli connection show ens33 | grep ipv4.method
ipv4.method:                            manual
[root@xyz ~]# nmcli connection modify ens33 \
> ipv4.method auto
[root@xyz ~]# nmcli connection up ens33

事实上除了使用nmcli命令,还可以直接修改相关网络配置文件的方式修改IP等网络参数,很多网上的教程也是这么指导的,但是这样可能会发生一些奇奇怪怪的问题,所以还是推荐使用nmcli命令。

修改主机名

可以通过hostnamectl这个命令修改主机名:

[root@xyz ~]# hostnamectl status
   Static hostname: xyz.icexmoon.centos
         Icon name: computer-vm
           Chassis: vm
        Machine ID: f5a85e92d51e4d40975fd956fd775f9c
           Boot ID: cd528028cc0649188c340d416b0f877d
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-1160.el7.x86_64
      Architecture: x86-64
[root@xyz ~]# hostnamectl set-hostname centos.icexmoon.xyz
[root@xyz ~]# cat /etc/hostname
centos.icexmoon.xyz
[root@xyz ~]# hostnamectl set-hostname xyz.icexmoon.centos

使用hostnamectl status可以显示主机名和一些其他的主机信息。

日期与时间设置

时区的显示与设置

使用timedatectl可以查看当前系统中的日期与时间相关设置:

[root@xyz ~]# timedatectl
      Local time: 五 2021-09-10 16:24:29 CST # 本地时间
  Universal time: 五 2021-09-10 08:24:29 UTC # 标准时间(格林尼治时间)
        RTC time: 五 2021-09-10 08:24:29
       Time zone: Asia/Shanghai (CST, +0800) # 当前时区
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

使用timedatectl可以列出可选的时区:

[root@xyz ~]# timedatectl list-timezones | grep -i new
America/New_York
America/North_Dakota/New_Salem

假如我们要修改时区为America/New_York:

[root@xyz ~]# timedatectl set-timezone 'America/New_York'
[root@xyz ~]# timedatectl
      Local time: 五 2021-09-10 04:29:20 EDT
  Universal time: 五 2021-09-10 08:29:20 UTC
        RTC time: 五 2021-09-10 08:29:19
       Time zone: America/New_York (EDT, -0400)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: yes
 Last DST change: DST began at
                  日 2021-03-14 01:59:59 EST
                  日 2021-03-14 03:00:00 EDT
 Next DST change: DST ends (the clock jumps one hour backwards) at
                  日 2021-11-07 01:59:59 EDT
                  日 2021-11-07 01:00:00 EST

可以看到UTC没变,但本地时间变了,因为我们这里的时间要比北美时间早12个小时。

之所以北美时间会多出来一个DST的东西,是因为美国采用夏令时(DST)制度,详细内容可以阅读夏令时。

修改日期和时间

timedatectl同样可以用来修改日期和时间:

[root@xyz ~]# timedatectl set-time '2021-09-15 00:00:00'
[root@xyz ~]# date '+%Y-%m-%d'
2021-09-15

虽然date命令也可以修改时间,但是用该命令修改以后需要使用hwclock命令更新BIOS中的时间,而timedatectl则会在时间修改后自动更新BIOS中的时间。

网络时间校准

与其手动修改时间,更为方便的做法是通过网络上的时间服务器来自动校准时间:

[root@xyz ~]# ntpdate time.windows.com
10 Sep 16:42:26 ntpdate[4671]: step time server 52.231.114.183 offset -372130.297442 sec
[root@xyz ~]# hwclock -w

ntpdate命令可以通过指定的时间校准服务器来校准本地时间,hwclock -w(hardware clock)用于将校准后的时间写入BIOS内。

  • ntp的意思是Network Time Protocol,即网络时间协议,这是一种计算机通过网络来同步时间的协议,详细内容可以阅读网络时间协议。

  • 之所以BIOS中的时间(hardware clock)比较特殊,是因为“硬件时间”是单独存储在主板上的寄存器内的,并且会由主板上的电池单独持续供电,即使是长时间电源断电也会保存时间。

语言设置

如果要查看当前系统的语言设置:

[root@xyz ~]# localectl
   System Locale: LANG=zh_CN.UTF-8
       VC Keymap: cn
      X11 Layout: cn,au
     X11 Variant: ,
     X11 Options: grp:ctrl_shift_toggle

如果要查看bash的语言设置:

[root@xyz ~]# locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

如果要将当前的中文图形界面切换为英文:

[root@xyz ~]# localectl set-locale LANG=en_US.utf8
[root@xyz ~]# systemctl isolate multi-user.target
[root@xyz ~]# systemctl isolate graphical.target

防火墙简易设置

个人觉得《鸟哥的Linux私房菜》这一小节的内容比较浅显,使用价值不高,所以不做总结,感兴趣的可以直接阅读原文防火牆簡易設定。

服务器硬件信息收集

dmidecode

CentOS有一个dmidecode(DMI decode)工具,可以用它输出很多硬件相关的有用信息,包括CPU、主板、内存的型号等。

DMI全称Desktop Management Interface,又称MSBIOS(System Management BIOS),是用来收集硬件信息的统一规范,更多内容可以阅读dmidecode命令详解(获取硬件信息)。

比如我们想查看主板相关的硬件信息:

[root@xyz ~]# dmidecode -t 1
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.

Handle 0x0001, DMI type 1, 27 bytes
System Information
        Manufacturer: VMware, Inc.
        Product Name: VMware Virtual Platform
        Version: None
        Serial Number: VMware-56 4d a5 3b 0c d0 95 b3-25 a5 7f da 76 72 06 e1
        UUID: 3ba54d56-d00c-b395-25a5-7fda767206e1
        Wake-up Type: Power Switch
        SKU Number: Not Specified
        Family: Not Specified

dmidecode命令后可以用-t参数指定DMI类型来分别显示相关的硬件信息,DMI类型主要有以下这些:

  • 1:主板型号与基本的硬件信息

  • 4:CPU相关信息

  • 9:系统相关的插槽类型

  • 17:内存插槽的类型,如果有内存,会显示内存的容量与型号

如果要查看内存相关的信息:

[root@xyz ~]# dmidecode -t 17 | head -n 30
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.

Handle 0x01A3, DMI type 17, 34 bytes
Memory Device
        Array Handle: 0x01A2
        Error Information Handle: No Error
        Total Width: 32 bits
        Data Width: 32 bits
        Size: 1024 MB
        Form Factor: DIMM
        Set: None
        Locator: RAM slot #0
        Bank Locator: RAM slot #0
        Type: DRAM
        Type Detail: EDO
        Speed: Unknown
        Manufacturer: Not Specified
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Part Number: Not Specified
        Rank: Unknown
        Configured Memory Speed: Unknown

硬件资源的收集与分析

除了查看硬件的相关信息,我们还需要时时注意系统中的各种硬件资源的使用情况,比如内存和硬盘的剩余空间等,硬件资源的信息收集工作可以使用以下工具:

  • gdisk:可以使用gdisk -l列出分区的情况,详细使用说明见Linux 之旅 5:磁盘与文件系统管理。

  • dmesg:可以输出内核的相关信息,详细使用说明见Linux 之旅 15:进程管理。

  • vmstat:可以动态地报告内存、交换分区、CPU、I/O等的使用情况,详细使用说明见Linux 之旅 15:进程管理。

  • lspci:列出Linux主机的所有PCI接口设备。

  • lsusb:列出LInux主机的所有USB接口状态,以及所接的设备。

  • iostat:与vmstat类似,同样可以显示CPU与周边设备的I/O情况。

lspci

[root@xyz ~]# lspci
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)
00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 08)
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:07.7 System peripheral: VMware Virtual Machine Communication Interface (rev 10)
00:0f.0 VGA compatible controller: VMware SVGA II Adapter
00:10.0 SCSI storage controller: Broadcom / LSI 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)
00:11.0 PCI bridge: VMware PCI bridge (rev 02)
00:15.0 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.4 PCI bridge: VMware PCI Express Root Port (rev 01)
...省略

如果要查看设备的详细信息:

[root@xyz ~]# lspci -s 00:01.0 -vv
00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01) (prog-if 00 [Normal decode])
        Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
        Status: Cap- 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Bus: primary=00, secondary=01, subordinate=01, sec-latency=64
        Secondary status: 66MHz+ FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- <SERR- <PERR-
        BridgeCtl: Parity- SERR- NoISA+ VGA- MAbort- >Reset- FastB2B+
                PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-

-s参数后跟的是lspci输出的内容的第一列数据,其实是设备总线、插槽、函数功能等组成的数据,相关数据编码维护在/usr/share/hwdata/pci.ids文件中:

[root@xyz ~]# cat /usr/share/hwdata/pci.ids | grep -v '^#' | head -n 20
0001  SafeNet (wrong ID)
0010  Allied Telesis, Inc (Wrong ID)
        8139  AT-2500TX V3 Ethernet
0014  Loongson Technology LLC
        7a00  Hyper Transport Bridge Controller
        7a02  APB (Advanced Peripheral Bus) Controller
        7a03  Gigabit Ethernet Controller
        7a04  OTG USB Controller
        7a05  Vivante GPU (Graphics Processing Unit)
        7a06  DC (Display Controller)
        7a07  HDA (High Definition Audio) Controller
        7a08  SATA AHCI Controller
        7a09  PCI-to-PCI Bridge
        7a0b  SPI Controller
        7a0c  LPC Controller
        7a0f  DMA (Direct Memory Access) Controller
        7a14  EHCI USB Controller

其实这个文件就是对各种硬件厂商的PCI设备进行统一编码。

当然随着硬件设备的推陈出新,该编码表会过时,你可以使用下面的命令进行更新:

[root@xyz ~]# update-pciids
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:41 --:--:--     0

该命令会运行一段时间,并且会持续刷新字符终端,所以最好让其在后台执行,并使用stdout重定向。

lsusb

[root@xyz ~]# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 004: ID 0e0f:0008 VMware, Inc.
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

iostat

[root@xyz ~]# iostat
Linux 3.10.0-1160.el7.x86_64 (xyz.icexmoon.centos)      2021年09月10日  _x86_64_        (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.59    0.00    0.75    0.03    0.00   98.63

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.86        50.41         6.75     420665      56330
dm-0              1.78        46.05         5.96     384327      49757
dm-1              0.01         0.26         0.00       2204          0
dm-2              0.04         0.72         0.30       6027       2477

默认情况下iostat会输出CPU和硬盘的I/O相关信息,需要注意的是,这些数据都是开机到现在的平均值。

如果要查看磁盘sda的I/O,且要每两秒输出一次,总共输出三次:

[root@xyz ~]# iostat -d 2 3 sda
Linux 3.10.0-1160.el7.x86_64 (xyz.icexmoon.centos)      2021年09月10日  _x86_64_        (1 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.82        49.30         6.61     420673      56400

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0

这里总共会输出三条数据,第一条是开机到当前的平均值,第二条是第一次执行和第二次执行间隔的平均值,第三条是第二次执行和第三次执行间隔的平均值。

了解磁盘的健康状况

借助smartd服务可以查看磁盘的健康情况,smart全称Self-Monitoring Analysis and Reporting Technology System,主要用于监测STAT与SCSI接口磁盘。

使用smartd服务有个前提是要对应的磁盘支持SMART协议。

实际使用中需要使用smartctl命令来调用smartd的功能,现在对VMware虚拟机执行smartctl:

[root@xyz ~]# smartctl -a /dev/sda
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-1160.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               VMware,
Product:              VMware Virtual S
Revision:             1.0
User Capacity:        42,949,672,960 bytes [42.9 GB]
Logical block size:   512 bytes
Rotation Rate:        Solid State Device
Device type:          disk
Local Time is:        Fri Sep 10 17:56:02 2021 CST
SMART support is:     Unavailable - device lacks SMART capability.

=== START OF READ SMART DATA SECTION ===
Current Drive Temperature:     0 C
Drive Trip Temperature:        0 C

Error Counter logging not supported

Device does not support Self Test logging

可以看到虚拟机的磁盘并不支持SMART协议。

所以这里直接摘抄《鸟哥的Linux私房菜》中的示例:

# 1. 用 smartctl 來顯示完整的 /dev/sda 的資訊
[root@study ~]# smartctl -a /dev/sda
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-229.el7.x86_64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

# 首先來輸出一下這部磁碟的整體資訊狀況!包括製造商、序號、格式、SMART 支援度等等!
=== START OF INFORMATION SECTION === 
Device Model:     QEMU HARDDISK
Serial Number:    QM00002
Firmware Version: 0.12.1
User Capacity:    2,148,073,472 bytes [2.14 GB]
Sector Size:      512 bytes logical/physical
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   ATA/ATAPI-7, ATA/ATAPI-5 published, ANSI NCITS 340-2000
Local Time is:    Wed Sep  2 18:10:38 2015 CST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

# 接下來則是一堆基礎說明!鳥哥這裡先略過這段資料喔!
General SMART Values:
Offline data collection status:  (0x82) Offline data collection activity
                                        was completed without error.
                                        Auto Offline Data Collection: Enabled.
.....(中間省略).....
# 再來則是有沒有曾經發生過磁碟錯亂的問題登錄!
SMART Error Log Version: 1
No Errors Logged

# 當你下達過磁碟自我檢測的過程,就會被記錄在這裡了!
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%      4660         -
# 2  Short offline       Completed without error       00%      4660         -

# 2. 命令磁碟進行一次自我檢測的動作,然後再次觀察磁碟狀態!
[root@study ~]# smartctl -t short /dev/sda
[root@study ~]# smartctl -a /dev/sda
.....(前面省略).....
# 底下會多出一個第三筆的測試資訊!看一下 Status 的狀態,沒有問題就是好消息!
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%      4660         -
# 2  Short offline       Completed without error       00%      4660         -
# 3  Short offline       Completed without error       00%      4660         -

备份

需要备份的数据

一般来说,Linux上需要备份的数据有:

  • /etc

  • /home

  • /var/spool/mail

  • /var/spool/at

  • /var/spool/cron

  • /boot

  • /root

  • /usr/local

  • /opt

如果安装了网络服务,比如Apache等,可能还需要备份额外的目录:

  • 网络服务相关的软件的配置文件:/etc或/usr/local

  • 软件服务产生的数据:比如Apache的网站目录/var/www

  • 相关的数据库文件

完整备份与累积备份

可以用于完整备份的工具有:

  • dd

  • cpio

  • xfsdump

  • tar

dd

dd这个工具用于备份相对简单,因为如果用dd备份磁盘或分区,是以扇区为单位1比1完整复制,可以忽略文件系统的区别,也无需对目标进行格式化。但缺点在于备份出的文件会比较大,因为是1比1备份,即使是空闲空间也会被复制出来。

# 1. 用 dd 來將 /dev/sda 備份到完全一模一樣的 /dev/sdb 硬碟上:
[root@study ~]# dd if=/dev/sda of=/dev/sdb

dd可以将目标备份到一个大文件,也可以备份到一个分区。

cpio

cpio的优点在于可以备份任何设备,也可以将目标备份到磁带设备中,缺点在于需要配合find等命令筛选出需要备份的目标:

# 2. 使用 cpio 來備份與還原整個系統,假設儲存媒體為 SATA 磁帶機:
[root@study ~]# find / -print | cpio -covB > /dev/st0  <==備份到磁帶機
[root@study ~]# cpio -iduv < /dev/st0                  <==還原

xfsdump

xfsdump是专门针对xfs文件系统的备份工具,优点是支持增量备份:

# 1. 完整備份
[root@study ~]# xfsdump -l 0 -L 'full' -M 'full' -f /backupdata/home.dump /home

# 2. 第一次進行累積備份
[root@study ~]# xfsdump -l 1 -L 'full-1' -M 'full-1' -f /backupdata/home.dump1 /home

tar

tar的主要用途是打包文件,但同样满足备份数据的用途,对于某些特定目录和文件的简单备份,我们同样可以使用tar实现:

[root@study ~]# tar --exclude /proc --exclude /mnt --exclude /tmp \
> --exclude /backupdata -jcvp -f /backupdata/system.tar.bz2 /

关于dd、tar、cpio、xfsdump的更多用法和示例见Linux 之旅 6:压缩、打包和备份。

差异备份

使用tar命令结合-N参数可以实现差异备份:

[root@study ~]# tar -N '2015-09-01' -jpcv -f /backupdata/home.tar.bz2 /home
# 只有在比 2015-09-01 還要新的檔案,在 /home 底下的檔案才會被打包進 home.bz2 中!
# 有點奇怪的是,目錄還是會被記錄下來,只是目錄內的舊檔案就不會備份。

使用rsync可以实现镜像备份:

[root@study ~]# rsync -av 來源目錄 目標目錄

# 1. 將 /home/ 鏡像到 /backupdata/home/ 去
[root@study ~]# rsync -av /home /backupdata/
# 此時會在 /backupdata 底下產生 home 這個目錄來!
[root@study ~]# rsync -av /home /backupdata/
# 再次進行會快很多!如果資料沒有更動,幾乎不會進行任何動作!

rsync的优点在于有完整备份之后再进行备份的时候备份速度会快很多。

备份案例

可以参考我的博客网站的备份方案腾讯云博客搭建 V。

以上就是Linux基础设置与备份相关的内容,谢谢阅读。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 备份 设置
最后更新:2021年9月11日

魔芋红茶

加一点PHP,加一点Go,加一点Python......

点赞
< 上一篇
下一篇 >

文章评论

取消回复

*

code

COPYRIGHT © 2021 icexmoon.cn. ALL RIGHTS RESERVED.
本网站由提供CDN加速/云存储服务

Theme Kratos Made By Seaton Jiang

宁ICP备2021001508号

宁公网安备64040202000141号