手把手教你利用命令行工具创建LinuxMac系统下的网站备份

创建网站备份应该是一个网站管理员最为重要的日常工作之一。但现实情况是,备份这一步往往被很多人忽略,也就是说仍然有很多网管的网站安全意识较低。

所有的Linux/Mac用户都能够零经济成本地通过命令行工具创建网站备份。如果你用的不是Linux/Mac,请关注我们的后续文章——如何在windows上通过软件方式创建备份。

本文的初衷不是为读者提供完整的备份解决方案,而是给那些有时间并且想要学习一些基础的命令行工具进行网站备份的宝宝们一点参考。

必要条件

你的主机必须具备必要的软件及证书。

(1) 服务器上的软件:

  • tar

(2) 电脑上的软件:

  • SSH(用于创建/删除备份文件)
  • SCP(用于下载备份文件)
  • Terminal(例如gnome-terminal,用于运行所有命令)

(3) 所需信息

  • 服务器IP及SSH证书
  • 数据库证书
  • 网站根目录(以及你想在备份中加入或排除内容的目录)
  • 数据库:MySQL、PostgreSQL或SQLite(如果你的网站使用其中一种)

备份创建的具体步骤

一旦将你的电脑与服务器相连接,你就可以快速地通过命令进行网站备份。

(1) 通过SSH连接服务器:

SSH是Secure Shell的简写,通常用于远程命令的执行。


打开terminal,键入以下命令,通过SSH协议连入你的服务器:


  1. ssh username@serversIP 

在terminal中连上服务器后,你键入的每一条命令都在你的服务器上执行。接下来,我们要在服务器上创建一个名为“backup(备份)”的新文件夹。只要不是公开的,你可以把这个文件夹放在任何地方。

如果你的web应用根目录为:/home/username/html,那么我们就能够顺利在 /home/username/中创建“backup(备份)”的文件夹。一旦备份传输到了电脑,就可以删除服务器上的备份记录。

如果你不知道自己的网站根目录,可以在cPanel账户中找到该信息:

上图中我们可以看到该网站的根目录是:/home/ma658tvk。

在Linux/Mac操作系统中,你可以使用mkdir命令创建目录。例如:


  1. mkdir -p /home/username/backup/{db,core,logs,conf} 

该命令能够帮你在/home/username/中创建“backup”目录。

在该文件夹中,我们已经创建了4个子目录:db、core、logs以及conf。

注意mkdir命令中的-p符号,该符号表示:在某目录已经存在但仍然按需创建主目录的情况下不会报错。

将整个应用进行备份的工作非常关键,包括数据库转储文件、核心文件、插件以及媒体文件。如果你想更加细节化一些,还可以对服务器配置文件及日志进行备份。在执行取证分析时,备份数据就更是尤为重要了。

导出数据库

我之所以热衷于使用命令行工具是因为在进行数据库备份时都无需再用到其它附加工具。大多数的数据库引擎都具备命令行功能,只需要拿到数据库证书,整个过程简单粗暴高效。


下面的命令将导出一个数据库转储文件并将其放在:/home/username/backup/db/

如果你的网站采用的是MySQL,可运行以下命令:


  1. mysqldump -u [database_user] -p [database_name] > [/home/username/backup/db/yourdomain.sql] 

若为PostgreSQL,则运行这个命令:


  1. pg_dump -U [database_user] [database_name] > [/home/username/backup/db/yourdomain.sql] 

这些命令会用到用户名密码。输入后(你的terminal中看不到这些字符)转储文件将存储在事先准备好的backup文件夹中。

如果网站用的是SQLite,那么你只需要复制该文件即可:


  1. cp [/path/to/your/SQLite.db] [/home/username/backup/db/] 

创建网站文件的Tar文件

现在我们要做的是压缩网站核心文件(为了方便起见)。在你的服务器上安装tar程序,并确定核心文件以及其它你想备份或不备份文件的具体位置。

我们再次假设你的网站存储在:/home/username/html。那么使用以下命令创建tar文件:


  1. tar -cf /home/username/backup/core/core.tar /home/username/html 

如果你想涵盖/home/username/html中的所有文件,那么上面这个命令就非常好用。但如果你不想包含全部呢?

假设你的网站架构如下:


  1. html 
  2. ├── cache 
  3. ├── core 
  4. └── www 
  5.     ├── index.php 
  6.     └── media 

如果我们压缩了整个目录,那么缓存(cache)文件夹也会被备份。而缓存文件完全没有必要备份,如果删除这部分内容,可以节省很多时间、节约带宽。但如果使用tar命令,我们可以通过-exclude这一标识将不需要备份的目录排除。下面我们在排除缓存目录的情况下对网站目录进行再次压缩:


  1. tar --exclude='/home/username/html/cache' -cf /home/username/backup/core/core.tar /home/username/html 

另外,名为core.tar的voilà – a .tar文件会存储在/home/username/backup/core/中。你也可以一直使用-exclude命令对你不需要备份的内容进行排除。

可选:对配置或日志文件进行备份

就个人经验来说,我已经多次受益于配置和日志文件的备份了。比如,我已经很多次忘记我的“httpd.conf”长啥样了,所以每次我都通过查电脑上的备份来解决这个难题。我是一个很懒的人,但请谅解——这个习惯常常能帮上大忙,日志文件也是。

配置文件和日志文件没有通用位置,但你可以在tar命令中添加多个位置。例如:


  1. tar -cf /home/username/backup/conf/conf.tar \ 
  2. /full/path/to/first_location \ 
  3. /full/path/to/second_location \ 
  4. /full/path/to/third_location 

第一行末尾的“\”符号表示按“Enter”键时,terminal不执行命令,而表示该命令含多行的意思。最后一行命令末尾不含“\”字符,表示terminal可以执行命令。这样,你就可以创建一个包含你系统不同文件夹中的配置/日志文件的.tar文件了。

只要你在备份的服务器中安装了正确的软件,恢复配置文件只会让你对配置文件进行复制。如果要在生产服务器中恢复配置文件,但软件不同,恢复过程可能会发生很多错误。务必小心。

最终备份

(1) 创建最终的tar文件

到这里,我们已经把/home/username/backup/文件夹下所需的文件都准备好了,现在我们只需要创建.tar文件并把它下载到我们自己的电脑上即可。虽然我们也可以在不压缩的情况下下载整个备份文件夹,但是我还是建议以单个压缩文件的方式下载(更加保险、安全)。


  1. tar -cf /home/username/latest.backup.tar /home/username/backup/ 

该命令将创建一个名为“latest.backup.tar”的文件,包含所有的备份文件。在terminal中输入“exit”就能断开个人电脑与服务器的连接。

(2) 通过SCP下载文件

我们需要通过scp命令来下载latest.backup.tar这个文件:


  1. scp username@serversIP:/home/username/latest.backup.tar /home/username/backups/domainname/backup_$(date +%Y%m%d_%H%M%S).tar 

该命令的作用就是从服务器上抓取该.tar文件,并将它下载到你电脑上“ /home/username/backups/domainname/”的文件夹,然后根据标准日期命令对该文件夹进行重命名(如backup_20170730_142422)。

(3) 从服务器中删除备份

现在网站备份已经安全地躺在你的电脑里了,我们也就可以放心地删除服务器上的备份记录了。

首先,通过SSH重新登录服务器,运行以下命令:


  1. rm /home/username/latest.backup.tar 
  2. rm -rfi /home/username/backup/ 

上面第一个命令的作用是删除服务器上最后的tar文件,第二个命令用于帮助你从服务器递归地删除备份文件夹。

警告!务必确保文件和文件夹路径的准确性,因为要想恢复通过命令行删除的东西非常困难,而且恢复难度也会随着时间的增加而增加。一旦某文件被删除,该文件的所有链接均被破坏,操作系统也会随时释放该文件所使用的的区块。再次声明:务必确认使用的路径是正确的。

一旦你删除了备份文件,就可以通过输入exit退出服务器。

结论

整个网站备份过程完美完成!这不是一个完整的解决方案,但我想这是学习信息安全领域中备份技术的一个良好开端。

本文作者:Carrie_spinfo

来源:51CTO

时间: 2024-10-30 07:46:18

手把手教你利用命令行工具创建LinuxMac系统下的网站备份的相关文章

使用PhoneGap命令行工具创建IOS PhoneGap项目及无证书真机调试

       在使用PhoneGap2.0及以上版本的时候,发现无法像低版本那样直接使用xcode来创建一个新的项目,只能通过PhoneGap的命令行工具来进行创建.        准备工作:        首先,准备好mac的环境和xcode的安装,地球人都知道.        然后得确定你的xcode已安装了Command Line Tools,如果不会安装的可以直接百度,上面有很多教程,这里就不多说了.        接着,下载好最新版本(我使用的是phonegap-2.4.0,此教程用于

Inxi:一个功能强大的获取Linux系统信息的命令行工具

Inxi 最初是为控制台和 IRC(网络中继聊天)开发的一个强大且优秀的命令行系统信息脚本.可以使用它获取用户的硬件和系统信息,它也用于调试或者社区技术支持工具. 使用 Inxi 可以很容易的获取所有的硬件信息:硬盘.声卡.显卡.网卡.CPU 和 RAM 等.同时也能够获取大量的操作系统信息,比如硬件驱动.Xorg .桌面环境.内核.GCC 版本,进程,开机时间和内存等信息. 运行在命令行和 IRC 上的 Inxi 输出略有不同,IRC 上会有一些可供用户使用的默认过滤器和颜色选项.支持的 IR

如何用SQL命令行工具删除dedecms指定id文章

用dedecms采集时标题字段设置错了,出现了注释符号<!---->,导致后台的文章列表出现错误,也无法直接从列表中删除,可以远程登录数据库去操作,这个相对比较麻烦,想着直接从后台的SQL命令行工具删除.修改前先做好备份,以防万一.找到"系统" - 系统设置 - SQL命令行工具删除,输入如下代码 DELETE FROM dede_addonarticle WHERE aid =347; DELETE FROM dede_arctiny WHERE id =347; DEL

推荐给开发人员的实用命令行工具

作为一名Web开发者,当程序出现问题时日子总不是那么好过.问题可能无处不在,可能是你发送的请求出了错,可能是回复出了错,可能是你使用的某个第三方库出了问题,又或者是一个外部API调用失败了.优秀的工具对于定位问题出在何处有着无可估量的价值,而且能在一开始就帮助我们阻止问题的出现,总的来说能使我们的工作更有效率.命令行工具尤其有用,因为它们非常易于做自动化和脚本处理,能够以各种不同的方式进行组合和重用.本文介绍了6个非常强大且灵活的工具,熟练使用这些工具能使你的生活变得更轻松一些. Curl Cu

详解Node.js如何开发命令行工具_node.js

前言 Node 给前端开发带来了很大的改变,促进了前端开发的自动化,我们可以简化开发工作,然后利用各种工具包生成生产环境.如运行sass src/sass/main.scss dist/css/main.css即可编译 Sass 文件. 在实际的开发过程中,我们可能会有自己的特定需求, 那么我们得学会如何创建一个Node命令行工具. hello world 老规矩第一个程序为hello world.在工程中新建bin目录,在该目录下创建名为helper的文件,具体内容如下: #!/usr/bin

如何在Linux中用命令行工具管理KVM虚拟环境

如何在Linux中用命令行工具管理KVM虚拟环境 在我们KVM系列专题的第四部分,我们将会一起讨论下在命令行界面下来管理KVM环境.我们分别用'virt-install'和virsh命令行工具来创建并配置虚拟机和存储池,用qemu-img命令行工具来创建并管理磁盘映像. Linux系统的KVM管理 在这篇文章里没有什么新的概念,我们只是用命令行工具重复之前所做过的事情,也没有什么前提条件,都是相同的过程,之前的文章我们都讨论过. 第一步: 配置存储池 Virsh命令行工具是一款管理virsh客户

如何在Linux命令行中创建以及展示演示稿

如何在Linux命令行中创建以及展示演示稿 你在准备一场演讲的时候,脑海可能会先被图文并茂.形象华丽的演示图稿所占据.诚然,没有人会否认一份生动形象的演讲稿所带来的积极作用.然而,并非所有的演讲都需要TED Talk的质量.更多时候,演讲稿只为传达特定的信息. 而这个,使用文本信息足以完成.在这种情况下,你的时间可以更好的花在信息的搜集和核实上面,而不是在谷歌图片搜索(Google Image)上寻找好看的图片. 在Linux的世界里,有几个不同的方式供你选择来做演讲.比如带有大量多媒体展示.视

phptags tag tidier 1.0发布 一个简单的命令行工具

phptags是一个简单的命令行工具用于自动重写PHP打开和关闭的标签.它可以在短的和长的开放标签之前进行转换,添加漏掉的关闭标签或删除它们,并且可以调整行距或在尾部添加空格.它利用正则表达式或编译器. phptags tag tidier 1.0此版本已还原UTF-8依赖的空格重写.在标记编译器模式,间距现在可以在更多的情况下保存.一个针对PHP5.2兼容性修补程序已被应用. 下载地址: phptags-1.0.deb&http://www.aliyun.com/zixun/aggregati

OAS的使用——控制台和命令行工具

OAS的使用--控制台和命令行工具 [TOC] 使用需求 使用命令行工具上传三个大小不一的文件. 使用命令行工具查看三个已上传文件的信息,其中最大的文件使用multipart方式上传. 使用命令行工具下载三个文件. 使用命令行工具删除这三个文件. 控制台的使用 使用参考官方文档中的控制台使用. 命令行工具的使用 OAS提供命令行工具oascmd.py,命令行工具可以给用户一个快捷的使用工具,不需要任何代码编写就可以使用OAS的功能,在实际使用中命令行工具更多作为一种测试工具. 工具的获取和环境配