在 Linux 上进行自动备份

linux下oracle自动备份脚本 linux下oracle自动备份脚本  vi /home/oracle/backup.sh   //编写脚本 以下为脚本内容 time=` date +"%Y%m%d%H%M" ` //变量time 获取当前系统时间 su - oracle -c "exp hbskjt_0113/password owner=hbskjt_0113 file=/home/o 阅读详情
在 Linux 上进行自动备份
英文原文
内容:
简单备份
高级备份
使用公钥/私钥进行安全的远程访问
使用 ssh-agent 自动化机器访问
使用 keychain 简化密钥访问
脚本化备份过程
调度
检验您的备份
另外的安全防范
结束语
参考资料
关于作者
对本文的评价
相关内容:
OpenSSH 密钥管理
使用 Perl 自动化 UNIX 系统管理
介绍用于系统管理的 cfengine
用 Perl 进行应用程序配置
Windows 到 Linux 之旅:第 8 部分. 备份与恢复
轻松进行自主的、安全的、分布式网络备份

级别: 中级

Carlos Justiniano (Carlos.Justiniano@ecuityinc.com)
软件设计师, Ecuity Inc.
2004 年 8 月

重要数据的丢失可能意味着致命的破坏。尽管如此,还是有无数专业人员忽视了对他们的数据的备份。虽然原因可能各不相同,但是,最常见的一个解释是,执行例行备份确实烦琐。由于机器擅长于完成普通而重复的任务,因此,自动化备份的过程是降低工作内在的枯燥性和人们与生俱来的拖延倾向的关键所在。

如果您使用 Linux,那么您就已经可以使用那些创建定制备份解决方案的极其强大的工具。本文中的方案,可以让您使用几乎每个 Linux 发行版本都附带的开放源代码工具来执行从简单的到更高级而且安全的网络备份。

简单备份
本文按照一步一步的方法来进行讲述,只要您遵循那些基本的步骤,此方法会是非常直观的。

在研究更高级的分布式备份解决方案之前,让我们首先来看一个简单而强大的存档机制。让我们来分析一个名为 arc 的方便的脚本,它可以让我们在 Linux shell 提示符中创建备份快照。

清单 1. arc shell 脚本

   #!/bin/sh
   tar czvf $1.$(date +%Y%m%d%-H%M%S).tgz $1
   exit $?

arc 脚本接收一个单独的文件或目录名作为参数,创建一个压缩的存档文件,同时将当前日期嵌入到生成的存档文件的名字之中。例如,如果您有一个名为 beoserver 的目录,您可以调用 arc 脚本,将 beoserver 目录名传递给它以创建一个压缩的存档文件,如: beoserver.20040321-014844.tgz

使用 date 命令是为了嵌入一个日期和时间戳以帮助您组织存档文件。日期的格式是年、月、日、小时、分、秒 —— 虽然秒域的使用有一些多余。查看 data 命令的手册( man date)来了解其他选项。另外,在清单 1 中,我们向 tar 传递了 -v(verbose)选项。这就使得 tar 显示出它正在存档的文件。如果您喜欢静默地进行备份,那么删除这个 -v 选项。

清单 2. 存档 beoserver 目录

   $ ls
   arc  beoserver
   $ ./arc beoserver
   beoserver/
   beoserver/bookl.dat
   beoserver/beoserver_ab_off
   beoserver/beoserver_ab_on
   $ ls
   arc  beoserver  beoserver.20040321-014844.tgz

高级备份
这个简单备份是实用的;不过,它仍然包含一个人工备份的过程。行业最佳经验通常建议将数据备份到多个媒体上,并备份到分开的不同地理位置。中心思想是避免依赖于任何一个单独的存储媒体或单独的位置。

在下一个例子中我们将应对这一挑战,我们将分析一个如图 1 所示的假想的分布式网络,它展示了对两台远程服务器和一台离线存储服务器的系统管理。

图 1. 分布式网络
图 1. 分布式网络

服务器 #1 和 #2 上的备份文件将安全地传输到离线存储服务器上,而且整个分布式备份过程将在没有人工干涉的情况下定期进行。我们将使用一组标准的工具(开放安全 shell 工具套件(OpenSSH)的一部分),以及磁带存档器(tar)和 cron 任务调度服务。我们的全部计划是,使用 cron 进行调度,使用 shell 程序和 tar 应用程序完成备份过程,使用 OpenSSH 安全 shell(ssh)加密进行远程访问、认证、安全 shell 拷贝(scp)以自动完成文件传输。要获得另外的资料请务必查看每个工具的手册。

使用公钥/私钥进行安全的远程访问
在数字安全的上下文中,密钥(key)指的是用来加密或解密其他数据片断的一个数据片断。公钥私钥模式的有趣之处在于,使用公钥加密的数据,只有用相应的私钥才可以解密。您可以自由地发布一个公钥,这样别人就可以对发送给您的消息进行加密。公钥/私钥模式彻底改变了数字安全的原因之一是,发送者和接收者不必再共享一个通用的密码。除了其他方面的贡献,公钥/私钥加密使用电子商务和其他安全传输成为可能。在本文中,我们将创建并使用公钥和私钥来创建一个非常安全的分布式备份解决方案。

要进行备份过程的每台机器都必须运行 OpenSSH 安全 shell 服务(sshd),同时让 22 端口可以通过任何内部防火墙被访问。如果您访问远程的服务器,那么很有可能您正在使用安全 shell。

我们的目标将是,不需要人工提供密码就可以安全地访问机器。一些人认为最简单的办法是设置无密码的访问:不要这样做。这样做不安全。不用那样,本文中我们将使用的方法可能会占用您大约一个小时的时间,建立起一个与使用“无密码”帐号同样方便的系统 —— 不过它是公认非常安全的。

让我们首先确保 OpenSSH 已经安装,接下来查看它的版本号。完成本文时,最新的发行的 OpenSSH 是 2004 年 2 月 24 日发布的版本 3.8。您应该考虑使用一个较新的而且稳定的发布版本,至少所用的版本应该要比版本 2.x 新。访问 OpenSSH Security 网页以获得关于特定旧版本的缺陷的细节(请参阅本文后面的 参考资料 中的链接)。到目前为止,OpenSSH 是非常稳定的,而且已经证明不存在其他 SSH 工具所报告的很多缺陷。

在 shell 提示符中,输入 ssh 并给出重要的 V 选项来检查版本号:

$ ssh -V
OpenSSH_3.5p1, SSH protocols 1.5/2.0, OpenSSL 0x0090701f

如果 ssh 返回的版本号大于 2.x,则机器处于相对良好的状态。无论如何,建议您所有的软件都使用最新的稳定版本,这对于安全相关的软件来说尤其重要。

我们的第一个步骤是,使用将会有特权访问服务器 1 和 2 的帐号登录到离线存储服务器机器(见图 1)。

$ ssh accountname@somedomain.com

登录到离线存储服务器以后,使用 ssh-keygen 程序并给出 -t dsa 选项来创建一个公钥/密钥对。 -t 选项是必须的,用来指定我们要生成的密钥类型。我们将使用数字签名算法(Digital Signature Algorithm,DSA),它让我们可以使用更新的 SSH2 协议。参阅 ssh-keygen 手册以获得更多细节。

在 ssh-keygen 执行的过程中,在询问您口令(passphrase)之前,将提示您输入 ssh 密钥存储的位置。当询问在何处存储密钥时只需要按下回车键,然后 ssh-keygen 程序将创建一个名为 .ssh 的隐藏目录(如果原来不存在),以及两个文件,一个公钥文件和一个私钥文件。

ssh-keygen 的一个有趣特性是,当提示输入一个口令时,它让您可以只是简单地按下回车键。如果您没有给出口令,那么 ssh-keygen 将生成没有加密的密钥!如您所想,这不是个好主意。当要求输入口令时,确保输入一个足够长的字符消息,最好包含混合字符而不仅仅是一个简单的密码字符串。

清单 3. 永远选择好的口令

   [offsite]:$ ssh-keygen -t dsa
   Generating public/private dsa key pair.
   Enter file in which to save the key (/home/accountname/.ssh/id_dsa):
   Enter passphrase (empty for no passphrase): (enter passphrase)
   Enter same passphrase again: (enter passphrase)
   Your identification has been saved in /home/accountname/.ssh/id_dsa.
   Your public key has been saved in /home/accountname/.ssh/id_dsa.pub.
   The key fingerprint is:
   7e:5e:b2:f2:d4:54:58:6a:fa:6b:52:9c:da:a8:53:1b accountname@offsite

由于 ssh-keygen 生成的 .ssh 目录是一个隐藏的“dot”目录,所以要给 ls 命令传入一个 -a 选项来查看新创建的目录:

[offsite]$ ls -a
. .. .bash_logout .bash_profile .bashrc .emacs .gtkrc .ssh

进入隐藏的 .ssh 目录并列出其内容:

[offsite]$ cd .ssh
[offsite]$ ls -lrt
id_dsa id_dsa.pub

现在,在隐藏的 .ssh 目录中,我们已经拥有了一个私钥(id_dsa)和一个公钥(id_dsa.pub)。您可以使用 vi 或 emacs 等文本编辑工具或者简单地使用 less 或 cat 命令来分析每个密钥文件的内容。您将看到由混合字符构成的内容已经经过了 base64 编码。

然后,我们需要将公钥拷贝并安装到服务器 1 和 2 上。不要使用 ftp。更合理的是,使用安全拷贝程序来将公钥传送到每一台远程机器上。

清单 4. 将公钥安装到远程服务器上

   [offsite]$ scp .ssh/id_dsa.pub accountname@server1.com:offsite.pub
   accountname@server1.com's password: (enter password, not new
   passphrase!)
   id_dsa.pub 100% |*****************************| 614 00:00

   [offsite]$ scp .ssh/id_dsa.pub accountname@server2.com:offsite.pub
   accountname@server2.com's password: (enter password, not new
   passphrase!)
   id_dsa.pub 100% |*****************************| 614 00:00

在安装完新的公钥后,我们就可以使用创建私钥和公钥时指定的口令来登录到每一台机器。现在,登录到每台机器,并将 offsite.pub 文件的内容附加到一个名为 authorized_keys 的文件中,这个文件存储在每台远程机器的 .ssh 目录下。我们可以使用一个文本编辑器或者简单地使用 cat 命令来将 offsite.pub 文件的内容附加到 authorized_keys 文件:

清单 5. 将 offsite.pub 添加到已授权密钥列表

   [offsite]$ ssh accountname@server1.com
   accountname@server1.com's password: (enter password, not new
   passphrase!)
   [server1]$ cat offsite.pub >> ./ssh/authorized_keys

接下来的步骤是考虑一些额外的安全性。首先,我们修改 .ssh 的访问权限,以使得只有所有者有读、写和执行的权限。然后,我们确保 authorized_keys 文件只能由所有者来访问。最后,将先前上传的 offsite.pub 密钥文件删除,因为再也不需要它了。确保设置适当的访问权限很重要,因为 OpenSSH 服务器可能会拒绝使用具有不安全访问权限的密钥。

清单 6. 使用 chmod 修改权限

   [server1]$ chmod 700 .ssh
   [server1]$ chmod 600 ./ssh/authorized_keys
   [server1]$ rm offsite.pub
   [server1]$ exit

在服务器 2 上完成同样的步骤后,我们就可以返回到离线存储机器上来测试新的口令类型的访问。在离线服务器上您可以输入下面的内容:

[offsite]$ ssh -v accountname@server1.com

在检验您的帐号现在可以使用新的口令而不是原来的密码来访问远程的服务器时,使用 -v 或 verbose 标记选项来显示调试信息。调试输出除了能让您在一个高的层面上观察到认证过程是如何工作的之外,还可以显示出您可以以其他方式无法得到的重要信息。在以后的连接中您可能并不需要指定 -v 标记;但是在测试连接时它相当有用。

使用 ssh-agent 自动化机器访问
ssh-agent 程序如同一个看门人,它根据需要安全地提供对安全密钥的访问。ssh-agent 启动后,它就会在后台运行,并且可以由 ssh 和 scp 程序等其他 OpenSSH 应用程序所使用。这就使得 ssh 程序可以请求一个已经解密了的密钥,而不是在每次需要时向您询问私钥的安全口令。

让我们来仔细研究一下 ssh -agent。ssh-agent 运行时它会输出 shell 命令:

清单 7. ssh-agent 应用

   [offsite]$ ssh-agent
   SSH_AUTH_SOCK=/tmp/ssh-XX1O24LS/agent.14179; export SSH_AUTH_SOCK;
   SSH_AGENT_PID=14180; export SSH_AGENT_PID;
   echo Agent pid 14180;

我们可以使用 shell 的 eval 命令来让 shell 执行 ssh-agent 显示的输出命令:

[offsite]$ eval `ssh-agent`
Agent pid 14198

eval 命令告诉 shell 去评价(执行)ssh-agent 程序生成的命令。确保您指定的是反引号(`)而不是单引号!执行后,eval `ssh-agent` 语句将返回代理的进程标识符。在幕后,SSH_AUTH_SOCK 和 SSH_AGENT_PID shell 变量已经被导出而可以使用。您可以将它们显示在 shell 控制台中来查看它们的值:

[offsite]$ echo $SSH_AUTH_SOCK
/tmp/ssh-XX7bhIwq/agent.14197

$SSH_AUTH_SOCK (SSH Authentication Socket 的缩写)是一个本地套接字的位置,应用程序可以通过它来与 ssh-agent 通信。将 eval `ssh-agent` 语句加入到您的 ~/.bash_profile 文件以确保 SSH_AUTH_SOCK 和 SSH_AGENT_PID 始终被注册。

ssh-agent 现在就已经成为一个后台进程,可以用 top 和 ps 命令查看得到。

现在我们就已经可以使用 ssh-agent 共享我们的口令。为此,我们必须使用一个名为 ssh-add 的程序,这个程序将我们的口令添加(发送)到运行着的 ssh-agent 程序。

清单 8. 用于免口令登录的 ssh-add

   [offsite]$ ssh-add
   Enter passphrase for /home/accountname/.ssh/id_dsa: (enter passphrase)
   Identity added: /home/accountname/.ssh/id_dsa
   (/home/accountname/.ssh/id_dsa)

现在,当我们访问 server1 时,不会再被提示输入口令:

[offsite]$ ssh accountname@server1.com
[server1]$ exit

如果您还不相信,那么尝试去掉(kill -9)ssh-agent 进程,然后重新连接 server1。这一次,您将注意到,server1 将会询问存储在 .ssh 目录下 id_dsa 中的私钥的口令:

[offsite]$ kill -9 $SSH_AGENT_PID
[offsite]$ ssh accountname@server1.com
Enter passphrase for key '/home/accountname/.ssh/id_dsa':

使用 keychain 简化密钥访问
到现在为止,我们已经了解了几个 OpenSSH 程序(ssh、scp、ssh-agent 和 ssh-add),而且我们已经创建并安装了私钥和公钥来启用一个安全而且自动的登录过程。您可能已经意识到,大部分设置工作只需要进行一次。例如,创建密钥、安装密钥、通过 .bash_profile 执行 ssh-agent 的过程在每台机器只需要进行一次。那真是好消息。

不太理想的消息是,我们每次登录到离线的机器上时,都必须调用 ssh-add,而且,ssh-agent 与我们将要用来自动化备份工作的 cron 调度进程并不直接兼容。cron 进程不能与 ssh-agent 通信的原因是,cron 作业是作为 cron 的子进程来执行,这样它们就不会继承 $SSH_AUTH_SOCK shell 变量。

幸运的是,有一个解决方案不但可以消除 ssh-agent 和 ssh-add 的局限,而且可以让我们使用 cron 来自动进行各种需要对其他机器进行安全地无密码访问的过程。在他 2001 年发表的三篇 developerWorks 系列文章中,即 OpenSSH key management(参阅 参考资料 以获得链接),Daniel Robbins 介绍了一个名为 keychain 的 shell 脚本,它是 ssh-add 和 ssh-agent 的一个前端,简化了整个无密码的过程。随着时间的过去,keychain 脚本已经经历了很多改进,现在由 Aron Griffis 维护,其最新的 2.3.2-1 发布版本公布于 2004 年 6 月 17 日。

keychain shell 脚本太长以致于无法在本文中列出,因为精心编写的脚本中包括了很多错误检测、丰富的文档以及非常多的跨平台代码。不过,keychain 可以自项目的 Web 站点上方便地下载得到(参阅 参考资料 以获得链接)。

下载并安装了 keychain 后,使用它就很简单了。只需要登录到每台机器并将下面两行添加到每个 .bash_profile 文件:

keychain id_dsa
. ~/.keychain/$HOSTNAME-sh

在您第一次重新登录到每台机器时,keychain 将向您询问口令。不过,除非机器被重新启动,否则,以后再登录时,keychain 将不会再要求您重新输入口令。最好的是,cron 任务现在可以使用 OpenSSH 命令来安全地访问远程的机器,而不需要交互地使用口令。更好的安全和更容易的使用,现在我们已经兼得。

清单 9. 在每台机器上初始化

   KeyChain 2.3.2; http://www.gentoo.org/projects/keychain
   Copyright 2002-2004 Gentoo Technologies, Inc.; Distributed under the
   GPL

   * Initializing /home/accountname/.keychain/localhost.localdomain-sh
   file...
   * Initializing /home/accountname/.keychain/localhost.localdomain-csh
   file...
   * Starting ssh-agent
   * Adding 1 key(s)...
   Enter passphrase for /home/accountname/.ssh/id_dsa: (enter passphrase)

脚本化备份过程
我们的下一个任务是创建执行必要的备份过程的 shell 脚本。目标是执行服务器 1 和 2 的完全数据库备份。在我们的例子中,每个服务器都运行着 MySQL 数据库服务器,我们使用 mysqldump 命令行工具来将一些数据库表导出到一个 SQL 输入文件中。

清单 10. 服务器 1 的 dbbackup.sh shell 脚本

   #!/bin/sh

   # change into the backup_agent directory where data files are stored.
   cd /home/backup_agent

   # use mysqldump utility to export the sites database tables
   mysqldump -u sitedb -pG0oDP@sswrd --add-drop-table sitedb --tables
   tbl_ccode tbl_machine tbl_session tbl_stats > userdb.sql

   # compress and archive
   tar czf userdb.tgz userdb.sql

在服务器 2 上,我们将设置一个类似的脚本来备份站点数据库中给出的独有表单。每个脚本都通过下面的步骤标记为可执行的:

[server1]:$ chmod +x dbbackup.sh

在服务器 1 和 2 上设置了 dbbackup.sh 后,我们返回到离线的数据服务器,在那里我们将创建一个 shell 脚本来调用各个远程 dbbackup.sh 脚本并随后传输压缩的(.tgz)数据文件。

清单 11. 用在离线的数据服务器上的 backup_remote_servers.sh shell 脚本

   #!/bin/sh

   # use ssh to remotely execute the dbbackup.sh script on server 1
   /usr/bin/ssh backup_agent@server1.com "/home/backup_agent/dbbackup.sh"

   # use scp to securely copy the newly archived userdb.tgz file
   # from server 1.  Note the use of the date command to timestamp
   # the file on the offsite data server.
   /usr/bin/scp backup_agent@server1.com:/home/backup_agent/userdb.tgz
   /home/backups/userdb-$(date +%Y%m%d-%H%M%S).tgz

   # execute dbbackup.sh on server 2
   /usr/bin/ssh backup_agent@server2.com "/home/backup_agent/dbbackup.sh"

   # use scp to transfer transdb.tgz to offsite server.
   /usr/bin/scp backup_agent@server2.com:/home/backup_agent/transdb.tgz
   /home/backups/transdb-$(date +%Y%m%d-%H%M%S).tgz

backup_remote_servers.sh shell 脚本使用 ssh 命令来执行远程服务器上的脚本。由于我们已经设置的无密码的访问,ssh 命令可以通过离线的服务器在服务器 1 和 2 上远程地执行命令。感谢 keychain,整个认证过程现在可以自动完成。

调度
我们的下一个步骤,也是最后一个步骤,是调度 backup_remote_servers.sh shell 脚本在离线的数据存储服务器上的执行。我们将向 cron 调度服务器中添加两个条目,以要求每天执行备份脚本两次,3:34 执行一次,8:34 再执行一次。在离线的服务器上使用 edit(-e)选项调用 crontab 程序。

[offsite]:$ crontab -e

crontab 调用 VISUAL 或 EDITOR shell 环境变量所指定的默认的编辑器。然后,输入两个条目并保存和关闭文件。

清单 12. 离线的服务器上的 Crontab 条目

   34 3 * * * /home/backups/remote_db_backup.sh
   34 20 * * * /home/backups/remote_db_backup.sh

一个 crontab 行包括两个主要部分,时间表部分和后面的命令部分。时间表分为多个域,用来指定一个命令应该何时执行:

清单 13. Crontab 格式

          +---- minute
          | +----- hour
          | | +------ day of the month
          | | | +------ month
          | | | | +---- day of the week
          | | | | | +-- command to execute
          | | | | | |
         34 3 * * * /home/backups/remote_db_backup.sh

检验您的备份
您应该对备份进行例行地检查,以确保程序正确进行。自动程序可以使烦琐的工作得到避免,但是永远不能因此而懒惰。如果您的数据值得备份,那么它也值得您时常进行抽样检查。

考虑添加一个 cron 作业来提醒您自己至少每个月对备份进行一次检查。另外,经常修改安全密钥也是一个好主意,同样您也可以调度一个 cron 作业来提醒您做这件事。

另外的安全防范
要获得更高的安全性,可以考虑在每台机器上安装并配置一个入侵检测系统(ntrusion Detection System,IDS),比如 Snort。可以预见,当入侵正在发生或者近期发生过时,IDS 将会通知您。IDS 到位后,您将可以添加其他层次上的安全,比如对您的备份进行数字签名和加密。

GNU Privacy Guard(GnuPG)、OpenSSL 和 ncrypt 等流行的开放源代码工具可以支持通过 shell 脚本对存档文件进行加密,不过不建议在没有 IDS 提供的额外层次保护的情况下这样做(参阅 参考资料 以获得关于 Snort 的更多信息)。

结束语
本文向您展示了如何让您的脚本在远程服务器执行以及如何执行安全自动的文件传输。我希望您能由此得到灵感而开始考虑保护您自己的重要数据,并使用 OpenSSH 和 Snort 等开放源代码工具来构建新的解决方案。

参考资料

  • 在官方的 OpenSSH 主页和 OpenSSH Security page 您将找到下载、文档以及更多内容。

  • 阅读 Daniel Robbins 的由三部分构成的极好的 IBM developerWorks 文章“OpenSSH 密钥管理”(developerWorks,2001 年)并下载他的 keychain 应用程序。

  • 要深入学习 SSH,Carlos 向您推荐 O'Reilly 的 SSH, The Secure Shell: The Definitive Guide(O'Reilly & Associates,2001 年)。

  • Snort 入侵检测系统(IDS)是一个开放源代码的最佳产品,设计用来检测并报告未授权的访问或可疑的行为。如果您正在计划自动化对存档文件的签名和加密,那么一定要使用一个 IDS。

  • 您可以使用 GNU Privacy Guard(GnuPG)、OpenSSL 和 ncrypt 在 shell 脚本中对存档备份文件进行签名和加密。

  • 如果您没有使用过它们,那么请参考 TCP wrappers 和 xinetd 中的提示。

  • Perl 爱好者还会有兴趣阅读“使用 Perl 自动化 UNIX 系统管理”(developerWorks,2001 年)、 “介绍用于系统管理的 cfengine ”(developerWorks,2002 年)和 “用 Perl 进行应用程序配置”(developerWorks,2000 年),它们都是 Ted Zlatanov 的作品。

  • developerWorks 文章“Windows 到 Linux 之旅:第 8 部分. 备份与恢复”(developerWorks,2003 年)给出了关于备份策略的技巧。

  • IBM's Tivoli Storage Manager for Linux 也可以根据定制的时间表在 Linux 计算机和服务器上自动执行可靠的备份、存档和集中数据管理。此外,The Tivoli Product Family 提供了用于用户管理、访问控制、网络监控 —— 还有更多功能 —— 的产品,都有统一的环境和接口。

  • 通过 IBM developerWorks Tivoli 专区 深入了解 Tivoli 解决方案。

  • 在 developerWorks Linux 专区 可以找到更多为 Linux 开发者准备的参考资料。

  • 在 Developer Bookstore Linux 区中定购 打折出售的 Linux 书籍。

  • 通过 developerWorks Subscription 使用最新的 IBM 工具和中间件来开发和测试您的 Linux 应用程序:您可以自 WebSphere、DB2、 Lotus、Rational、和 Tivoli 得到 IBM 软件,以及一个可以在 12 个月内使用这些软件的许可,所有的花费都比您想像的要低。

  • 自 developerWorks 的 Speed-start your Linux app 专区下载可以运行于 Linux 之上的经过挑选的 developerWorks Subscription 产品免费测试版本,包括 WebSphere Studio Site Developer、WebSphere SDK for Web services、WebSphere Application Server、DB2 Universal Database Personal Developers Edition、Tivoli Access Manager 和 Lotus Domino Server。要更快速地开始上手,请参阅针对各个产品的 how-to 文章和技术支持。

关于作者
Carlos Justiniano Carlos Justiniano 是 Ecuity, Inc 的一名软件设计师。他所感兴趣的方面包括通信和分布式计算。Carlos 为很多技术杂志撰写文章。他还是基于 Linux 的 ChessBrain 项目的奠基人和设计师,那个项目赢得了与分布式计算相关的 2005 Guinness World Record。您可以通过 carlos.justiniano@ecuityinc.com 与他联系
【Linux 从基础到进阶】自动化备份与恢复策略 在 Linux 运维中,数据的安全性至关重要,自动化备份与恢复策略是保障系统和数据安全的核心环节。无论是系统配置文件、用户数据、数据库还是应用程序日志,备份和恢复都能为系统灾难恢复、数据丢失等突发情况提供可靠的解决方案。本文将介绍如何在 CentOS 和 Ubuntu 系统中实施自动化备份与恢复策略,包括不同类型的备份方法、具体的操作步骤以及如何实现自动化。 阅读详情

相关推荐

告别C盘空间焦虑!Miniforge环境路径精准配置全攻略

本文深入解析Miniforge虚拟环境默认占用C盘空间的根本原因,即未正确配置`.condarc`文件中的`envs_dirs`路径优先级。通过详细的诊断步骤与配置命令,指导用户将环境路径精准迁移至指定磁盘(如D盘),并分享禁用自动激活、使用`--prefix`参数等高阶技巧,帮助开发者彻底告别C盘空间焦虑,实现虚拟环境的整洁与可控管理。

weixin_28831399的博客 238

【码上起飞】Linux服务器上实现 MySQL 数据库每天自动定时备份(小白教程)

为了防止别人删库跑路数据丢失,偷偷的将数据库每天定时备份,这样可以最起码可以降低数据丢失的风险,还有mysql的镜像万一坏了,没事还有备份。注:这次放在data目录下,当人然你可以放在别的地方。把 DatabaseName 替换为实际的数据库名;注:把 username 替换为实际的用户名;##3.创建备份定时数据库备份Shell脚本。把 password 替换为实际的密码;##5.为脚本文件添加可执行权限。##6.添加可执行计划任务。##2.创建备份目录。##4.数据脚本输入。

weixin_44016938的博客 933

恶意代码实验3:Word宏病毒实验

只要下次打开这个word文档,就会执行以上代码,并将自身复制到Normal.dot(word文档的公共模板)和当前文档的ThisDocument中,同时改变函数名(模板中为Document_Close,当前文档为Document_Open),此时所有的word文档打开和关闭时,都将运行以上的病毒代码,可以加入适当的恶意代码,影响word的正常使用,本例中只是简单的跳出一个提示框。回答不正确三次,即可自动跳出病毒程序,但那时已经出现几十个文档。1、打开的宏编辑器如图所示,即可编写病毒代码。

qq_63949327的博客 6505

linux 自动备份数据库脚本

bin/bash# 定义属性# 名称:mysqlbak.sh# 本地存放备份数据库目录# 如果文件夹不存在,创建文件夹if [!thenecho -e "备份目录 $backupdir 创建成功。elseecho "备份目录 $backupdir 已经存在。fi# 备份文件后缀时间echo "开始备份数据库..."# 注意数据库备份密码 设置在/etc/my.cnf中# 备份所有数据库到本地(不压缩)# 压缩。

m0_62721873的博客 1400

【CMU-自主导航与规划】Autonomous Exploration Development Environment 实战:从环境搭建到多场景测试

本文详细介绍了CMU开源自主导航开发环境(Autonomous Exploration Development Environment)的实战部署与测试。内容涵盖从Ubuntu与ROS环境搭建、仿真场景配置,到核心导航模块(地形分析、局部避障、航点跟踪)的深度解析,并演示了如何集成TARE探索与FAR规划等上层算法,最终指导连接真实SLAM与实车部署,完成多场景性能评估。

weixin_29215391的博客 706

2024年全国大学生信息安全竞赛安徽省赛网络系统建设与运维赛项-网络构建真题

该网络工程方案主要包含基础配置、有线网络、无线网络、出口网络、运维配置和SDN网络六个部分。基础配置包括设备接口设置、SSH服务开启和SNMP功能配置。有线网络部分重点部署VLAN、MSTP、VRRP和OSPF协议,实现网络冗余和负载均衡。无线网络规划了AP点位、信号覆盖和用户接入策略,包括SSID配置、频段优化和安全认证。出口网络配置了NAT转换、VPN隧道和流量审计功能。运维方面搭建了监控平台实时监测设备状态。SDN网络部分通过控制器实现流量管控。整个方案实现了多业务隔离、高可用性网络架构和

weixin_42221934的博客 1174

Linux 下MySql自动备份脚本

Linux 自动备份 Mysql 数据库

=死神= 1241

计算机组成原理实验二 运算器组成实验

事实上,ALU的设计是在全加器的基础上,对全加器功能的扩展来实现符合要求的多种算术/逻辑运算的功能。为了实现多种功能的运算,An、Bn数据是不能直接与全加器相连接的,它们受到功能变量F3—F1的制约,因此,可由An、Bn数据和功能变量F3-F1组合成新的函数Xn 、Yn,然后,再将Xn 、Yn和下一位进位Cn-1通过全加器进行全加运算以实现所需的运算功能。AC寄存器可用来存储ALU的输入以实现两个操作数的运算操作,也可以用来存储来自ALU的结果,以将这些结果反馈给ALU以进行更多的处理。

qq_63574533的博客 1449

linux文件自动备份:rsync

解决文件自动将增量文件备份到另一台服务器上的问题

等等等等等再等 1772

RK3568平台开发系列讲解(NPU篇)什么是RKNPU

📢本篇章将介绍RKNPU。

内核笔记 4354

YOLOv11的多任务学习:检测+分割+姿态估计-(扩展模型头部分支,实现多任务联合训练)

YOLOv11作为Ultralytics团队于2024年9月发布的最新YOLO系列模型,在前代版本基础上进行了多项架构创新,使其成为支持多任务学习的理想框架。其核心改进包括引入C2PSA(跨阶段局部自注意)模块,将跨阶段局部网络和自注意机制优势结合,使模型能够更有效地跨多层捕获上下文信息。C3k2模块取代了之前的C2f模块,作为CSP Bottleneck的自定义实现,使用两个较小卷积核而非一个大卷积核,在保持准确性的同时提高了效率。 多任务学习(Multi-Task Learning, MTL)在YOL

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 655

如何定期自动进行系统备份?

在Linux系统中,你可以使用`cron`任务来定期自动进行系统备份。`cron`是一个Linux下的定时任务服务,它允许用户在指定时间执行特定的命令或脚本。- 考虑备份文件的存储位置,如果备份到本地磁盘,确保磁盘空间足够。在打开的编辑器中,添加以下行来设置定时任务。- `/path/to/backup.sh` 是你的备份脚本的路径。- 确保备份脚本中的路径正确,并且有足够的权限访问这些路径。- 定期检查备份文件和日志文件,确保备份任务正常运行。通过这些步骤,你可以实现Linux系统的定期自动备份。

2401_83911225的博客 934

Kimi Code国产AI编程助手安装使用详细教程

Kimi Code 开发者智能编程服务简介:Kimi Code 是专为开发者提供的 AI 编程辅助工具,基于旗舰模型 Kimi K3(2.8万亿参数,支持100万token上下文)。提供 CLI、VS Code 插件等形式,支持代码阅读、编辑等功能。用户可通过API Key接入第三方工具。安装简单(Windows/Mac/Linux一键脚本),需在官网生成API密钥并登录使用。注意账户需充值余额方可正常调用服务。

猿小白的博客 2055

Linux Mysql自动备份

mysql自动备份 1.配置自动备份环境 1.1 创建文件见放脚本文件和备份数据 # 创建/data/backup/mysql mkdir -p /data/backup/mysql cd /data/backup # 创建mysql_backup.sh的脚本并且填充数据 vi mysql_backup.sh # vi mysql_backup.sh进行编辑和修改 1.2 创建 备份数据的语句 mysql_backup.sh 用于备份数据 #!/bin/bash # 需要的

qq_36694046的博客 5549

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

linux mysql定时自动备份实现

linux mysql定时自动备份实现开始使用一、数据备份二、数据恢复三、创建计划任务添加计划任务 开始使用 基本上不管是对于我们自己使用,还是给客户部署服务器,mysql备份是不可或缺的一部分,这里就教大家怎么去实现mysql的定时自动备份功能,为了实现这个功能,也是踩了各种坑,最后整理出来的,在这里我们实现了下面这两个功能 mysql_backup.sh 用于备份数据 mysql_resto...

醉春风的博客 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

linux下的简单自动备份

使用crond就可以了,比如:要每天凌晨00:00自动备份/test目录到/backup目录下,并且进行压缩,压缩文件的文件名根据当前备份时间变化,可以:1. 写好backup.sh脚本:#!/bin/shtar czf /backup/test.$(date +%Y-%m-%d-%H-%M-%S).tgz /testexit $?这个脚本将目录打包压缩成形如:test.2005-01-01-00

zxhong 2099

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Linux下mysql自动备份脚本

Linux下mysql自动备份脚本 本随笔文章,由个人博客(鸟不拉屎)转移至博客园 发布时间:2018 年 06 月 26 日 原地址:https://niaobulashi.com/archives/AutoBackup.html 逛了蛮多博客网站的,亲眼看到一个博客网站数据丢失之后的模样,挺为他心痛的。于是就打算弄个mysql定...

鸟不拉诗 3109

Linux设置MySQL自动备份

Linux设置MySQL自动备份 一、Linux设置定时任务 所用命令:crontab。 1、命令简介 crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。 L...

古德曼的博客 2499

linux自动备份db2数据库备份,db2 自动备份(linux 、windows)总结

1.linux db2 自动备份,备份后压缩,拷贝到另一服务器 全备份: #!/bin/sh #------------------------------------- #db2自动备份脚本 #by lushuai # create at 2013-08-05 #------------------------------------ #参数 Basepath=/home/db2-backup-...

weixin_34039159的博客 543

linux系统自动备份文件夹,Linux系统下本机数据的自动备份

Linux系统下本机数据的自动备份我们可以手工备份数据,但是每天定时做这些操作可能比较繁琐。当然,Linux为我们提供了强大的工具来进行自动备份。这就是cron。cron是一个后台进程,一旦启动,将根据自己的配置文件定时地执行任务。我们可以编写一个shell脚本文件来进行文件备份,然后让cron定时地启动这个脚本文件来对数据进行备份。例如,我们每天备份/home/html目录下的所有的文件到/ho...

weixin_42494742的博客 914

Linux 定时自动备份数据

第一步:在home下新建一个文件夹专放自动备份脚本以及备份的数据文件 新建文件夹命令如下 mkdir /home/data_backup 在新建的文件夹data_backup中存放自动备份的脚本文件。 第二步:创建脚本文件,命令如下 touch mysqlbackup.sh 第三步:编辑脚本文件,命令如下 vim mysqlbackup.sh 在文件中的加入如下内容 #!/bin/bash date_str=$(date +%Y%m%d-%T) cp -r /home/postgre_data /home/

peter的博客 3018

如何使用 Bash 脚本自动化 Linux 备份

在 Linux 系统上,定期备份对于保护您的数据、确保其安全以及在出现问题时简化恢复过程至关重要。无论您是在处理个人文件、运行开发环境还是管理服务器,您都需要一个可靠的备份计划。处理备份最简单灵活的方法之一是编写自定义脚本,这让您可以精确决定备份哪些内容、何时备份以及存储在哪里。它还节省时间并减少数据丢失的风险。在本指南中,您将学习如何创建一个简单的 shell 脚本,自动备份重要文件。

运维老生常谈 1122

用linux tar自动备份,linux下用tar进行数据备份

本机上数据的手工备份Linux系统上配有功能强大的tar命令,可以灵活地备份数据。tar最初是为了制作磁带备份而设计的把文件和目录备份到磁带中,然后从磁带中提取或恢复文件。当然,现在我们可以使用tar来备份数据到任何存储介质上。tar非常易于使用稳定可靠,而且在任何 Linux系统上都有这个命令。因此是最经常使用的备份工具。1.使用tar命令备份数据的格式如下:上述命令是将/home/html 目...

weixin_36002349的博客 2273
上一篇: netfilter/iptables 简介
下一篇: BSD下安装Oracle
johnathan
博客等级 码龄22年 37粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值