使用这个简单的方法来迁移一个网站以及管理防火墙配置。你有过把一个 WordPress 网站迁移到一台新主机上的需求吗？我曾经迁移过好多次，迁移过程相当简单。当然，的的市场时候我都不会用通用的推荐方法，这次也不例外 —— 我用更简单的方法，这才是我推荐的方法。这个迁移方法没有破坏性，因此如果出于某些原因你需要还原到原来的服务器上，很容易可以实现。一个 WordPress 网站的组成部分运行一个基于 WordPress 的网站有三个重要组成部分：WordPress 本身，一个 web 服务器，如 Apache（我正在用），以及 MariaDB。MariaDB 是 MySQL 的一个分支，功能相似。业界有大量的 Web 服务器，由于我使用了 Apache 很长时间，因此我推荐用 Apache。你可能需要把 Apache 的配置方法改成你用的 Web 服务器的方法。初始配置我使用一台 Linux 主机作为防火墙和网络路由。在我的网络中 Web 服务器是另一台主机。我的内部网络使用的是 C 类私有网络地址范围，按 无类别域间路由 Classless Internet Domain Routing （CIDR）方式简单地记作 192.168.0.0/24。对于防火墙，相比于更复杂的 firewalld，我更喜欢用非常简单的 IPTables。这份防火墙配置中的一行会把 80 端口（HTTP）接收到的包发送给 Web 服务器。在 /etc/sysconfig/iptables 文件中，你可以在注释中看到，我添加了规则，把其他入站服务器连接转发到同一台服务器上合适的端口。# Reroute ports for inbound connections to the appropriate web/email/etc server. # HTTPD goes to 192.168.0.75 -A PREROUTING -d 45.20.209.41/255.255.255.248 -p tcp -m tcp --dport 80 \ -j DNAT --to-destination 192.168.0.75:80 我使用 命名虚拟主机 named virtual host 来配置原来的 Apache Web 服务器，因为我在这个 HTTPD 实例上运行着多个网站。使用命名虚拟主机配置是个不错的方法，因为（像我一样）未来你可能会在运行其他的网站，这个方法可以使其变得容易。/etc/httpd/conf/httpd.conf 中需要迁移的虚拟主机的网站相关部分请参考下面代码。这个片段中不涉及到 IP 地址的修改，因此在新服务器上使用时不需要修改。<VirtualHost *:80> ServerName www.website1.org ServerAlias server.org DocumentRoot "/var/website1/html" ErrorLog "logs/error_log" ServerAdmin me@website1.org <Directory "/var/website1/html"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost> 在迁移之前，你需要在 httpd.conf 的最顶端附近找到 Listen 声明并修改成类似下面这样。这个地址是服务器的真实私有 IP 地址，不是公开 IP 地址。Listen 192.168.0.75:80 你需要修改新主机上 Listen 的 IP 地址。前期工作准备工作分为以下三步：安装服务配置防火墙配置 web 服务器安装 Apache 和 MariaDB如果你的新服务器上还没有 Apache 和 MariaDB，那么就安装它们。WordPress 的安装不是必要的。dnf -y install httpd mariadb 新服务器防火墙配置确认下新服务器上的防火墙允许访问 80 端口。你\_每台\_电脑上都有一个防火墙，对吗？大部分现代发行版使用的初始化配置包含的防火墙会阻止所有进来的网络流量，以此来提高安全等级。下面片段的第一行内容可能已经在你的 IPTables 或其他基于防火墙的网络过滤器中存在了。它标识已经被识别为来自可接受来源的入站包，并绕过后面的其它 INPUT 过滤规则，这样可以节省时间和 CPU 周期。片段中最后一行标识并放行 80 端口新进来的请求到 HTTPD 的连接。-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT <删节> # HTTP -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT 下面的示例 /etc/sysconfig/iptables 文件是 IPTables 最少规则的例子，可以允许 SSH（端口 22）和 HTTPD（端口 80）连接。*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT # SSHD -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT # HTTP -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT # Final disposition for unmatched packets -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT 在新服务器主机上我需要做的就是在 /etc/sysconfig/iptables 文件的防火墙规则里添加上面片段的最后一行，然后重新加载修改后的规则集。iptables-restore /etc/sysconfig/iptables 大部分基于红帽的发行版本，如 Fedora，使用的是 firewalld。我发现对于它的适用场景（如家用、小到中型企业）而言，它过于复杂，因此我不用它。我建议你参照 firewalld 网页 来向 firewalld 添加入站端口 80。你的防火墙及其配置可能跟这个有些差异，但最终的目的是允许新 Web 服务器 80 端口接收 HTTPD 连接。HTTPD 配置在 /etc/httpd/conf/httpd.conf 文件中配置 HTTPD。像下面一样在 Listen 片段中设置 IP 地址。我的新 Web 服务器 IP 地址是 192.168.0.125。Listen 192.168.0.125:80 复制（对应要迁移的网站的） VirtualHost 片段，粘贴到新服务器上 httpd.conf 文件的末尾。迁移过程只有两组数据需要迁移到新服务器 —— 数据库本身和网站目录结构。把两个目录打包成 tar 文档。cd /var ; tar -cvf /tmp/website.tar website1/ cd /var/lib ; tar -cvf /tmp/database.tar mysql/ 把两个 tar 文件复制到新服务器。我通常会把这类文件放到 /tmp 下，这个目录就是用来做这种事的。在新服务器上运行下面的命令，把 tar 文档解压到正确的目录。cd /var ; tar -xvf /tmp/website.tar cd /var/lib ; tar -xvf /tmp/database.tar WordPress 的所有文件都在 /var/website1 下，因此不需要在新服务器上安装它。新服务器上不需要执行 WordPress 安装过程。这个目录就是需要迁移到新服务器上的全部内容。最后一步是启动（或重启）mysqld 和 httpd 服务守护进程。WrodPress 不是一个服务，因此不使用守护进程的方式来启动。systemctl start mysqld ; systemctl start httpd 启动之后，你应该检查下这些服务的状态。systemctl status mysqld ● mariadb.service - MariaDB 10.5 database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2021-08-21 14:03:44 EDT; 4 days ago Docs: man:mariadbd(8) https://mariadb.com/kb/en/library/systemd/ Process: 251783 ExecStartPre=/usr/libexec/mariadb-check-socket (code=exited, status=0/SUCCESS) Process: 251805 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir mariadb.service (code=exited, status=0/SUCCESS) Process: 251856 ExecStartPost=/usr/libexec/mariadb-check-upgrade (code=exited, status=0/SUCCESS) Main PID: 251841 (mariadbd) Status: "Taking your SQL requests now..." Tasks: 15 (limit: 19003) Memory: 131.8M CPU: 1min 31.793s CGroup: /system.slice/mariadb.service └─251841 /usr/libexec/mariadbd --basedir=/usr Aug 21 14:03:43 simba.stmarks-ral.org systemd[1]: Starting MariaDB 10.5 database server... Aug 21 14:03:43 simba.stmarks-ral.org mariadb-prepare-db-dir[251805]: Database MariaDB is probably initialized in /var/lib/mysql already, n> Aug 21 14:03:43 simba.stmarks-ral.org mariadb-prepare-db-dir[251805]: If this is not the case, make sure the /var/lib/mysql is empty before> Aug 21 14:03:44 simba.stmarks-ral.org mariadbd[251841]: 2021-08-21 14:03:44 0 [Note] /usr/libexec/mariadbd (mysqld 10.5.11-MariaDB) startin> Aug 21 14:03:44 simba.stmarks-ral.org systemd[1]: Started MariaDB 10.5 database server. systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Drop-In: /usr/lib/systemd/system/httpd.service.d └─php-fpm.conf Active: active (running) since Sat 2021-08-21 14:08:39 EDT; 4 days ago Docs: man:httpd.service(8) Main PID: 252458 (httpd) Status: "Total requests: 10340; Idle/Busy workers 100/0;Requests/sec: 0.0294; Bytes served/sec: 616 B/sec" Tasks: 278 (limit: 19003) Memory: 44.7M CPU: 2min 31.603s CGroup: /system.slice/httpd.service ├─252458 /usr/sbin/httpd -DFOREGROUND ├─252459 /usr/sbin/httpd -DFOREGROUND ├─252460 /usr/sbin/httpd -DFOREGROUND ├─252461 /usr/sbin/httpd -DFOREGROUND ├─252462 /usr/sbin/httpd -DFOREGROUND └─252676 /usr/sbin/httpd -DFOREGROUND Aug 21 14:08:39 simba.stmarks-ral.org systemd[1]: Starting The Apache HTTP Server... Aug 21 14:08:39 simba.stmarks-ral.org httpd[252458]: AH00112: Warning: DocumentRoot [/var/teststmarks-ral/html] does not exist Aug 21 14:08:39 simba.stmarks-ral.org httpd[252458]: Server configured, listening on: port 80 Aug 21 14:08:39 simba.stmarks-ral.org systemd[1]: Started The Apache HTTP Server. 最终的修改现在所需的服务都已经运行了，你可以把 /etc/sysconfig/iptables 文件中 HTTDP 的防火墙规则改成下面的样子：-A PREROUTING -d 45.20.209.41/255.255.255.248 -p tcp -m tcp --dport 80 \ -j DNAT --to-destination 192.168.0.125:80 然后重新加载设置的 IPTables 规则。iptables-restore /etc/sysconfig/iptables 由于防火墙规则是在防火墙主机上，因此不需要把外部 DNS 入口改成指向新服务器。如果你使用的是内部 DNS 服务器，那么你需要把 IP 地址改成内部 DNS 数据库里的 A 记录。如果你没有用内部 DNS 服务器，那么请确保主机 /etc/hosts 文件里新服务器地址设置得没有问题。测试和清理请确保对新配置进行测试。首先，停止旧服务器上的 mysqld 和 httpd 服务。然后通过浏览器访问网站。如果一切符合预期，那么你可以关掉旧服务器上的 mysqld 和 httpd。如果有失败，你可以把 IPTables 的路由规则改回去到旧服务器上，直到问题解决。之后我把 MySQL 和 HTTPD 从旧服务器上删除了，这样来确保它们不会意外地被启动。总结就是这么简单。不需要执行数据库导出和导入的过程，因为 mysql 目录下所有需要的东西都已经复制过去了。需要执行导出/导入过程的场景是：有网站自己的数据库之外的数据库；MariaDB 实例上还有其他网站，而你不想把这些网站复制到新服务器上。迁移旧服务器上的其他网站也很容易。其他网站依赖的所有数据库都已经随着 MariaDB 的迁移被转移到了新服务器上。你只需要把 /var/website 目录迁移到新服务器，添加合适的虚拟主机片段，然后重启 HTTPD。我遵循这个过程把很多个网站从一个服务器迁移到另一个服务器，每次都没有问题。via: https://opensource.com/article/21/9/migrate-wordpress作者：David Both 选题：lujun9972 译者：lxbwolf 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
这个系列我们提供了基础知识的概述，以帮助您成功地从另一个操作系统过渡到 Linux；这篇中我们涉及到 Linux 桌面系统上的一些常见设置。在这个系列中，我们提供了基础知识的概述，以帮助您成功地从另一个操作系统过渡到 Linux。如果你错过了以前的文章，可以从这访问：第1部分 - 入门介绍第2部分 - 磁盘、文件和文件系统第3部分 - 图形操作环境第4部分 - 命令行第5部分 - 使用 sudo第5部分 - 安装软件Linux 提供了一系列网络和系统设置。在你的桌面计算机上，Linux 允许您调整系统上的任何内容。大多数这些设置都出现在 /etc 目录下的纯文本文件中。这里我将介绍你使用桌面 Linux 操作系统的过程中最常用的设置。大多数设置都能够在“设置”程序里面找到，这些设置可能对于不同的 Linux 发行版有所不同。通常来说，你可以修改背景、调整音量、连接打印机、进行显示设置等。对于这些设置尽管我不会全部谈论，但你可以自己探索。连接互联网在 Linux 中连接到互联网通常非常简单。如果您通过以太网电缆连接，Linux 通常会在插入电缆时或启动时（如果电缆已连接）获得 IP 地址并自动连接。如果您使用无线网络，则在大多数发行版中都有一个菜单，可以在指示器面板中或在“设置”中（取决于您的发行版），您可以在其中选择无线网络的 SSID。如果网络受密码保护，它通常会提示您输入密码。然后连接，这个过程相当顺利。在图形界面您可以通过进入设置来调整网络设置。通常称为“系统设置”或者是“设置”。通常可以轻松找到设置程序，因为它的图标是齿轮或工具图片（图1）。图1： Gnome 桌面网络设置指示器图标。网络接口名称在 Linux 下，网络设备有名称。 从历史上看，它们的名称分别为 eth0 和 wlan0 —— 或“以太网”和“无线网络”。 较新的 Linux 系统一直使用看起来更深奥的不同名称，如 enp4s0 和 wlp5s0 。 如果名称以 en 开头，则它是有线以太网接口。 如果它以 wl 开头，那么它就是一个无线接口。 其余的字母和数字反映了设备如何连接到硬件。通过命令行进行网络管理如果您希望更好地控制网络设置，或者如果您在没有图形桌面的情况下管理网络连接，则还可以从命令行管理网络。请注意，用于在图形桌面中管理网络的最常用服务是“ 网络管理器 Network Manager ”，而网络管理器通常会覆盖在命令行上进行的设置更改。如果您正在使用网络管理器，最好在其界面中更改您的设置，以防止撤消您从命令行或其他位置所做的更改。在图形环境中的更改设置与在网络管理器中很类似，您还可以使用名为 nmtui 的工具从命令行更改网络管理器设置。nmtui 工具提供了您在图形环境中找到的所有设置，但是是在基于文本的半图形界面中提供了该设置，该界面可在命令行上运行（图 2）。图 2：nmtui 界面在命令行上，有一个名为 ifconfig 的旧工具来管理网络，还有一个名为 ip 的新工具。在某些发行版中，ifconfig 被认为是不推荐使用的，默认情况下甚至没有安装。在其他发行版上，ifconfig 仍可以使用。以下是一些允许您显示和更改网络设置的命令：进程和系统信息在 Windows 系统中，你可以使用任务管理器来查看所有正在运行的程序和服务的列表。你可以停止运行中的程序，并且可以在其中显示的某些选项卡中查看系统性能。在 Linux 系统下你可以使用命令行或者图形界面中做同样的事情。Linux 系统中根据你的发行版本会有不同的几个可用的图形工具。大多数所共有的工具是“系统监视器”和 KSysGuard。在这些工具中，你可以查看系统性能，查看进程列表甚至是杀死进程（图 3）。图 3：NetHogs 截图在这些工具中，你也可以查看系统全局网络流量（图 4）。图 4：Gnome System Monitor 的截图管理进程和系统使用您还可以从命令行使用相当多的工具。使用 ps 命令可以查看系统中的进程列表。默认情况下，这个命令的结果是显示当前终端会话下的所有进程列表。但是你也可以通过使用各种命令行参数显示其他进程。如果 ps 命令不会使用，可以使用命令 info ps 或者 man ps 获取帮助。大多数人都希望得到一个进程列表，因为他们想要停止占用过多内存或 CPU 时间的进程。这种情况下有两个非常简单的命令，分别是 top 和 htop 命令（图 5）。图 5：top 截屏top 和 htop 工具使用效果非常相似。两个命令每秒或者两秒会更新重新排序，这样会把占用 CPU 资源最多的放置在列表顶部。你也可以根据其他资源的使用情况比如内存使用情况来排序。使用这两个命令时（top 和 htop），你可以输入 ? 来获取使用帮助，输入 q 来退出程序。使用 top 命令你可以按 k 键然后输入进程 ID 来杀死某个进程。使用 htop 命令时你可以使用 ↑ ↓ 键来将列表中的一条记录进行高亮显示，按下 F9 键会杀死进程（需要回车确认）。本系列中提供的信息和工具将帮助您开始使用 Linux。 只需一点时间和耐心，您就会感到这非常舒服。想学习更多 Linux 内容可访问免费的 Linux 简介课程，此课程来自 Linux 基金会和 edx。via: https://www.linux.com/blog/learn/2018/4/migrating-linux-network-and-system-settings作者：John Bonesio 选题：lujun9972 译者：ScarboroughCoral 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
所有的 Linux 打包系统和工具都会让人迷惑，但是这篇面向初学者的教程可以帮助你搞明白。如你所见，众所瞩目的 Linux 已经用在互联网，以及 Arduino、Beagle 和树莓派主板等设备上，或许你正在考虑是时候尝试一下 Linux 了。本系列将帮助你成功过渡到 Linux。如果你错过了本系列的早期文章，可以在这里找到它们：第1部分 - 入门介绍第2部分 - 磁盘、文件和文件系统第3部分 - 图形操作环境第4部分 - 命令行第5部分 - 使用 sudo安装软件要在你的计算机上获得新软件，通常的方法是从供应商处获得软件产品，然后运行一个安装程序。过去，软件产品会出现在像 CD-ROM 或 DVD 一样的物理媒介上，而现在我们经常从互联网上下载软件产品。使用 Linux，安装软件就像在你的智能手机上安装一样。如同你的手机应用商店一样，在 Linux 上有个提供开源软件工具和程序的 中央仓库 central repository ，几乎任何你想要的程序都会出现在可用软件包列表中以供你安装。每个程序并不需要运行单独的安装程序，而是你可以使用 Linux 发行版附带的软件包管理工具。（这里说的 Linux 发行版就是你安装的 Linux，例如 Ubuntu、Fedora、Debian 等）每个发行版在互联网上都有它自己的集中存储库（称为仓库），它们存储了数千个预先构建好的应用程序。你可能会注意到，在 Linux 上安装软件有几种例外情况。有时候，你仍然需要去供应商那里获取他们的软件，因为该程序不存在于你的发行版的中央仓库中。当软件不是开源和/或自由软件的时候，通常就是这种情况。另外请记住，如果你想要安装一个不在发行版仓库中的程序时，事情就不是那么简单了，即使你正在安装自由及开源程序。这篇文章没有涉及到这些更复杂的情况，请遵循在线的指引。有了所有的 Linux 包管理系统和工具，接下来干什么可能仍然令人困惑。本文应该有助于澄清一些事情。包管理目前在 Linux 发行版中有几个相互竞争的用于管理、安装和删除软件的包管理系统。每个发行版都选择使用了一个 包管理工具 package management tools 。Red Hat、Fedora、CentOS、Scientific Linux、SUSE 等使用 Red Hat 包管理（RPM）。Debian、Ubuntu、Linux Mint 等等都使用 Debian 包管理系统，简称 DPKG。还有一些其它包管理系统，但 RPM 和 DPKG 是最常见的。图 1: Package installers无论你使用的软件包管理是什么，它们通常都是一组构建于另外一种工具之上的工具（图 1）。最底层是一个命令行工具，它可以让你做任何与安装软件相关的一切工作。你可以列出已安装的程序、删除程序、安装软件包文件等等。这个底层工具并不总是最方便使用的，所以通常会有一个命令行工具，它可以使用单个命令在发行版的中央仓库中找到软件包，并下载和安装它以及任何依赖项。最后，通常会有一个 图形应用程序 graphical application ，可以让你使用鼠标选择任何想要的内容，然后单击 “install” 按钮即可。图 2: PackageKit对于基于 Red Hat 的发行版，包括 Fedora、CentOS、Scientific Linux 等，它们的底层工具是 rpm，高级工具叫做 dnf（在旧系统上是 yum）。图形安装程序称为 PackageKit（图 2），它可能在系统管理菜单下显示名字为 “Add/Remove Software（添加/删除软件）”。图 3: Ubuntu Software对于基于 Debian 的发行版，包括 Debian、Ubuntu、Linux Mint、Elementary OS 等，它们的底层命令行工具是 dpkg，高级工具称为 apt。在 Ubuntu 上管理已安装软件的图形工具是 Ubuntu Software（图 3）。对于 Debian 和 Linux Mint，图形工具称为 新立得 Synaptic ，它也可以安装在 Ubuntu 上。你也可以在 Debian 相关发行版上安装一个基于文本的图形化工具 aptitude。它比 新立得 synaptic 更强大，并且即使你只能访问命令行也能工作。如果你想通过各种选项进行各种“骚”操作，你可以试试这个，但它使用起来比新立得更复杂。其它发行版也可能有自己独特的工具。命令行工具在 Linux 上安装软件的在线说明通常描述了在命令行中键入的命令。这些说明通常更容易理解，并且将命令复制粘贴到命令行窗口中，可以在不出错的情况下一步步进行。这与下面的说明相反：“打开这个菜单，选择这个程序，输入这个搜索模式，点击这个标签，选择这个程序，然后点击这个按钮”，这经常让你在各种操作中迷失。有时你正在使用的 Linux 没有图形环境，因此熟悉从命令行安装软件包是件好事。表 1 和表 2 列出了基于 RPM 和 DPKG 系统的一下常见操作及其相关命令。请注意 SUSE，它像 RedHat 和 Fedora 一样使用 RPM，却没有 dnf 或 yum。相反，它使用一个名为 zypper 的程序作为高级命令行工具。其他发行版也可能有不同的工具，例如 Arch Linux 上的 pacman 或 Gentoo 上的 emerge。有很多包管理工具，所以你可能需要查找哪个适用于你的发行版。这些技巧应该能让你更好地了解如何在新的 Linux 中安装程序，以及更好地了解 Linux 中各种软件包管理方式如何相互关联。通过 Linux 基金会和 edX 的免费 “Linux 入门”课程了解有关 Linux 的更多信息。via: https://www.linux.com/blog/learn/2018/3/migrating-linux-installing-software作者：JOHN BONESIO 译者：MjSeven 校对：pityonline, wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
sudo 机制可以让你轻松以普通用户偶尔执行管理任务。让我们来学习一下。本文是我们关于迁移到 Linux 的系列文章的第五篇。如果你错过了之前的那些，你可以在这里赶上：第1部分 - 入门介绍第2部分 - 磁盘、文件和文件系统第3部分 - 图形操作环境第4部分 - 命令行你可能一直想了解 Linux。也许它在你的工作场所使用，如果你每天使用它，你的工作效率会更高。或者，也许你想在家里的某些计算机上安装 Linux。无论是什么原因，这一系列文章都是为了让过渡更容易。与许多其他操作系统一样，Linux 支持多用户。它甚至支持多个用户同时登录。用户帐户通常会被分配一个可以存储文件的家目录。通常这个家目​​录位于：/home/<login name> 这样，每个用户都有存储自己的文档和其他文件的独立位置。管理任务在传统的 Linux 安装中，常规用户帐户无权在系统上执行管理任务。典型的安装 Linux 的系统会要求用户以管理员身份登录以执行某些任务，而不是为每个用户分配权限以执行各种任务。Linux 上的管理员帐户称为 root。Sudo 解释从历史上看，要执行管理任务，必须以 root 身份登录，执行任务，然后登出。这个过程有点乏味，所以很多人以 root 登录并且整天都以管理员身份工作。这种做法可能会导致灾难性的后果，例如，意外删除系统中的所有文件。当然，root 用户可以做任何事情，因此没有任何保护措施可以防止有人意外地执行影响很大的操作。创建 sudo 工具是为了使你更容易以常规用户帐户登录，偶尔以 root 身份执行管理任务，而无需登录、执行任务然后登出。具体来说，sudo 允许你以不同的用户身份运行命令。如果你未指定特定用户，则假定你指的是 root 用户。sudo 可以有复杂的设置，允许用户有权限使用 sudo 运行某些命令，而其他的不行。通常，安装的桌面系统会使创建的第一个帐户在 sudo 中有完全的权限，因此你作为主要用户可以完全管理 Linux 安装。使用 Sudo某些安装 Linux 的系统设置了 sudo，因此你仍需要知道 root 帐户的密码才能执行管理任务。其他人，设置 sudo 输入自己的密码。这里有不同的哲学。当你尝试在图形环境中执行管理任务时，通常会打开一个要求输入密码的对话框。输入你自己的密码（例如，在 Ubuntu 上）或 root 帐户的密码（例如，Red Hat）。当你尝试在命令行中执行管理任务时，它通常只会给你一个 “permission denied” 错误。然后你在前面用 sudo 重新运行命令。例如：systemctl start vsftpd Failed to start vsftpd.service: Access denied sudo systemctl start vsftpd [sudo] password for user1: 何时使用 Sudo以 root 身份运行命令（在 sudo 或其他情况下）并不总是解决权限错误的最佳解决方案。虽然将以 root 身份运行会消除 “permission denied” 错误，但有时最好寻找根本原因而不是仅仅解决症状。有时文件拥有错误的所有者和权限。当你在尝试一个需要 root 权限来执行操作的任务或者程序时使用 sudo。如果文件恰好由另一个用户（包括 root 用户）拥有，请不要使用 sudo。在第二种情况下，最好正确设置文件的权限。通过 Linux 基金会和 edX 的免费“Linux 介绍”课程了解有关 Linux 的更多信息。via: https://www.linux.com/blog/learn/2018/3/migrating-linux-using-sudo作者：John Bonesio 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
刚接触 Linux？在这篇教程中将学习如何轻松地在命令行列出、移动和编辑文件。这是关于迁徙到 Linux 系列的第四篇文章了。如果您错过了之前的内容，可以回顾我们之前谈到的内容 新手之 Linux、文件和文件系统、和 图形环境。Linux 无处不在，它可以用于运行大部分的网络服务器，如 Web、email 和其他服务器；它同样可以在您的手机、汽车控制台和其他很多设备上使用。现在，您可能会开始好奇 Linux 系统，并对学习 Linux 的工作原理萌发兴趣。在 Linux 下，命令行非常实用。Linux 的桌面系统中，尽管命令行只是可选操作，但是您依旧能看见很多朋友开着一个命令行窗口和其他应用窗口并肩作战。在互联网服务器上和在设备中运行 Linux 时（LCTT 译注：指 IoT），命令行通常是唯一能直接与操作系统交互的工具。因此，命令行是有必要了解的，至少应当涉猎一些基础命令。在命令行（通常称之为 Linux shell）中，所有操作都是通过键入命令完成。您可以执行查看文件列表、移动文件位置、显示文件内容、编辑文件内容等一系列操作，通过命令行，您甚至可以查看网页中的内容。如果您在 Windows（CMD 或者 PowerShell） 上已经熟悉关于命令行的使用，您是否想跳转到“Windows 命令行用户”的章节上去？先阅读这些内容吧。导航在命令行中，这里有一个当前工作目录（文件夹和目录是同义词，在 Linux 中它们通常都被称为目录）的概念。如果没有特别指定目录，许多命令的执行会在当前目录下生效。比如，键入 ls 列出文件目录，当前工作目录的文件将会被列举出来。看一个例子：$ ls Desktop Documents Downloads Music Pictures README.txt Videos ls Documents 这条命令将会列出 Documents 目录下的文件：$ ls Documents report.txt todo.txt EmailHowTo.pdf 通过 pwd 命令可以显示当前您的工作目录。比如：$ pwd /home/student 您可以通过 cd 命令改变当前目录并切换到您想要抵达的目录。比如：$ pwd /home/student $ cd Downloads $ pwd /home/student/Downloads 路径中的目录由 /（左斜杠）字符分隔。路径中有一个隐含的层次关系，比如 /home/student 目录中，home 是顶层目录，而 student 是 home 的子目录。路径要么是绝对路径，要么是相对路径。绝对路径由一个 / 字符打头。相对路径由 . 或者 .. 开始。在一个路径中，一个 . 意味着当前目录，.. 意味着当前目录的上级目录。比如，ls ../Documents 意味着在此寻找当前目录的上级名为 Documents 的目录：$ pwd /home/student $ ls Desktop Documents Downloads Music Pictures README.txt Videos $ cd Downloads $ pwd /home/student/Downloads $ ls ../Documents report.txt todo.txt EmailHowTo.pdf 当您第一次打开命令行窗口时，您当前的工作目录被设置为您的家目录，通常为 /home/<您的登录名>。家目录专用于登录之后存储您的专属文件。环境变量 $HOME 会展开为您的家目录，比如：$ echo $HOME /home/student 下表显示了用于目录导航和管理简单的文本文件的一些命令摘要。搜索有时我们会遗忘文件的位置，或者忘记了我要寻找的文件名。Linux 命令行有几个命令可以帮助您搜索到文件。第一个命令是 find。您可以使用 find 命令通过文件名或其他属性搜索文件和目录。举个例子，当您遗忘了 todo.txt 文件的位置，我们可以执行下面的代码：$ find $HOME -name todo.txt /home/student/Documents/todo.txt find 程序有很多功能和选项。一个简单的例子：find <要寻找的目录> -name <文件名> 如果这里有 todo.txt 文件且不止一个，它将向我们列出拥有这个名字的所有文件的所有所在位置。find 命令有很多便于搜索的选项比如类型（文件或是目录等等）、时间、大小和其他一些选项。更多内容您可以同通过 man find 获取关于如何使用 find 命令的帮助。您还可以使用 grep 命令搜索文件的特定内容，比如：grep "01/02/2018" todo.txt 这将为您展示 todo 文件中 01/02/2018 所在行。获取帮助Linux 有很多命令，这里，我们没有办法一一列举。授人以鱼不如授人以渔，所以下一步我们将向您介绍帮助命令。apropos 命令可以帮助您查找需要使用的命令。也许您想要查找能够操作目录或是获得文件列表的所有命令，但是您不知道该运行哪个命令。您可以这样尝试：apropos directory 要在帮助文档中，得到一个于 directiory 关键字的相关命令列表，您可以这样操作：apropos "list open files" 这将提供一个 lsof 命令给您，帮助您列出打开文件的列表。当您明确知道您要使用的命令，但是不确定应该使用什么选项完成预期工作，您可以使用 man 命令，它是 manual 的缩写。您可以这样使用：man ls 您可以在自己的设备上尝试这个命令。它会提供给您关于使用这个命令的完整信息。通常，很多命令都能够接受 help 选项（比如说，ls --help），列出命令使用的提示。man 页面的内容通常太繁琐，--help 选项可能更适合快速浏览。脚本Linux 命令行中最贴心的功能之一是能够运行脚本文件，并且能重复运行。Linux 命令可以存储在文本文件中，您可以在文件的开头写入 #!/bin/sh，后面的行是命令。之后，一旦文件被存储为可执行文件，您就可以像执行命令一样运行脚本文件，比如，--- contents of get_todays_todos.sh --- #!/bin/sh todays_date=`date +"%m/%d/%y"` grep $todays_date $HOME/todos.txt 脚本可以以一套可重复的步骤自动化执行特定命令。如果需要的话，脚本也可以很复杂，能够使用循环、判断语句等。限于篇幅，这里不细述，但是您可以在网上查询到相关信息。Windows 命令行用户如果您对 Windows CMD 或者 PowerShell 程序很熟悉，在命令行输入命令应该是轻车熟路的。然而，它们之间有很多差异，如果您没有理解它们之间的差异可能会为之困扰。首先，在 Linux 下的 PATH 环境与 Windows 不同。在 Windows 中，当前目录被认为是该搜索路径（PATH）中的第一个文件夹，尽管该目录没有在环境变量中列出。而在 Linux 下，当前目录不会明确的放在搜索路径中。Linux 下设置环境变量会被认为是风险操作。在 Linux 的当前目录执行程序，您需要使用 ./（代表当前目录的相对目录表示方式） 前缀。这可能会搞糊涂很多 CMD 用户。比如：./my_program 而不是my_program 另外，在 Windows 环境变量的路径中是以 ;（分号） 分割的。在 Linux 中，由 : 分割环境变量。同样，在 Linux 中路径由 / 字符分隔，而在 Windows 目录中路径由 \ 字符分割。因此 Windows 中典型的环境变量会像这样：PATH="C:\Program Files;C:\Program Files\Firefox;" 而在 Linux 中看起来像这样：PATH="/usr/bin:/opt/mozilla/firefox" 还要注意，在 Linux 中环境变量由 $ 拓展，而在 Windows 中您需要使用百分号（就是这样： %PATH%）。在 Linux 中，通过 - 使用命令选项，而在 Windows 中，使用选项要通过 / 字符。所以，在 Linux 中您应该：a_prog -h 而不是a_prog /h 在 Linux 下，文件拓展名并没有意义。例如，将 myscript 重命名为 myscript.bat 并不会因此而变得可执行，需要设置文件的执行权限。文件执行权限会在下次的内容中覆盖到。在 Linux 中，如果文件或者目录名以 . 字符开头，意味着它们是隐藏文件。比如，如果您申请编辑 .bashrc 文件，您不能在家目录中找到它，但是它可能真的存在，只不过它是隐藏文件。在命令行中，您可以通过 ls 命令的 -a 选项查看隐藏文件，比如：ls -a 在 Linux 中，普通的命令与 Windows 的命令不尽相同。下面的表格显示了常用命令中 CMD 命令和 Linux 命令行的差异。via: https://www.linux.com/blog/learn/2018/1/migrating-linux-command-line作者：John Bonesio 译者：CYLeft 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
这篇文章对 Linux 图形环境做了一番介绍，展示了在不同的 Linux 发行版上的各种选择。这是我们迁移到 Linux 系统系列的第三篇文章。如果你错过了先前的两篇，这里有两文的链接《入门介绍》 和 《磁盘、文件、和文件系统》。本文中，我们将讨论图形操作环境。在 Linux 系统中，你可以依照喜好选择并且定制一个图形界面，你有很大的选择余地，这也是 Linux 优越的体验之一。一些主流的 Linux 图形界面包括：Cinnamon、Gnome、KDE Plasma、Xfce 和 MATE，总之这里有很多选择。有一点经常混淆 Linux 新手，虽然某个 Linux 系统分配了一个缺省的图形环境，但是一般你可以随时更换这个图形界面。这和 Windows 或 Mac OS 的惯用者的定势思维不同。安装图形环境是一件独立的事情，很多时候，Linux 和其图形环境的连接并不紧密。此外，你在一个图形环境构建运行的程序同样适用于另一个图形环境。比如说一个为 KDE Plasma 图形环境编写的应用程序完全适用于 Gnome 桌面图形环境。由于人们熟悉 Windows 和 MacOS 系统，部分 Linux 操作系统的图形环境在一定程度上尝试着去模仿它们，但另一些 Linux 图形界面则是独特的。下面，我将就一些不同的 Linux 发行版，展示几个 Linux 图形环境。如果你不确定应该采用那个 Linux 发行版，那我建议你从 Ubuntu 开始，获取其长期支持（LTS）的版本（Ubuntu 16.04.3 LTS 正在开发）。Ubuntu 稳定且真的非常好用。由 Mac 过渡Elementary OS 发行版提供了和 Mac 系统风格很接近的界面。它的默认图形环境被称作 Pantheon，是一款很适合 Mac 用户过渡使用的图形环境。这款图形界面发行版的屏幕底部有一个停靠栏，专为极简者使用而设计。为了保持简约的风格，很多默认的应用程序甚至都不会有自己的菜单。相反，它们的按钮和控件在应用程序的标题栏上（图 1）。图 1： Elementary OS Pantheon.Ubuntu 发行版提供的一个默认的图形界面，也和 Mac 相似。Ubuntu 17.04 或者更老的版本都使用 Unity 图形环境，Unity 停靠栏的默认位置在屏幕的左边，屏幕顶部有一个全局应用程序共享的菜单栏。由 Windows 过渡ChaletOS 亦步亦趋模仿 Windows 界面，可以帮助 Windows 用户轻松的过渡到 Linux。ChaletOS 使用的图形环境是 Xfce（图 2）。在屏幕的左下角有一个开始（主）菜单和搜索栏。屏幕的右下角是一个桌面图标和一些通知信息。这看起来和 Windows 非常像，乍一看，可能都会以为桌面跑的是 Windows。图 2： ChaletOS with Xfce.Zorin OS 发行版同样尝试模仿 Windows。 Zorin OS 使用的 Gnome 的改进桌面，工作起来和 Windows 的图形界面很相似。左下角的开始按钮、右下角的通知栏和信息通知栏。开始按钮会弹出一个和 Windows 无异的应用程序列表和搜索框。独有的图形环境Gnome 桌面（图 3）是最常用的图形环境之一。许多发行版将 Gnome 作为默认的图形环境。Gnome 并不打算模仿 Windows 或是 MacOS，而是以其自身的优雅和易用为目标。图 3：openSUSE with Gnome.Gnome 桌面环境从版本 2 到 版本 3 发生了巨变，Cinnamon 环境为消除该改变带来的不利影响而创造。尽管 Cinnamon 和前辈 Gnome 2 外观不相似，但是它依旧尝试提供一个简约的界面，而且它的功能和 Windows XP 类似。MATE 图形环境直接模仿于 Gnome 2，在它的屏幕顶部有一个用作设置和存放应用的菜单栏，底部提供了一个应用程序运行选项卡和一些其他组件。KDE plasma 围绕组件界面而构建，组件可以安装在桌面或是面板上（图 4）。图 4: 安装了 KDE Plasma 的 Kubuntu 操作系统。没有那个图形环境比另外一个更好。不同的风格适用不同的用户风格。另外，如果选择太多无从下手，那就从 Ubuntu 开始吧。相似与不同不同的操作系统处理方式不同，这会给使用者的过渡带来挑战。比如说，菜单栏可能出现在不同的位置，然后设置有可能用不同的选项入口路径。我列举了一些相似或不同地方来帮助减少 Linux 调整。鼠标Linux 的鼠标通常和 Windows 与 MacOS 的工作方式有所差异。在 Windows 或 Mac，双击标签，你几乎可以打开任何事物，而这在 Linux 图形界面中很多都被设置为单击。此外在 Windows 系统中，你通常通过单击窗口获取焦点。在 Linux，很多窗口的焦点获取方式被设置为鼠标悬停，即便鼠标悬停下的窗口并不在屏幕顶端。这种微妙的差异有时候会让人很吃惊。比如说，在 Windows 中，假如有一个后台应用（不在屏幕顶层），你移动鼠标到它的上面，不点击鼠标仅仅转动鼠标滚轮，顶层窗口会滚动。而在 Linux 中，后台窗口（鼠标悬停的那个窗口）会滚动。菜单应用菜单是电脑程序的一个主要集中位置，最近似乎可以调整移动菜单栏到不碍事的地方，甚至干脆完全删除。大概，当你迁移到 Linux，你可能找不到你期待的菜单。应用程序菜单会像 MacOS一样出现在全局共享菜单栏内。和很多移动应用程序一样，该菜单可能在“更多选项”的图标里。或者，这个菜单干脆被完全移除被一个按钮取代，正如在 Elementary OS Pantheon 环境里的一些程序一样。工作空间很多 Linux 图形环境提供了多个工作空间。一个工作空间包含的正在运行的程序窗口充盈了整个屏幕。切换到不同的工作空间将会改变程序的可见性。这个概念是把当前项目运行使用的全部应用程序分组到一个工作空间，而一些为另一个项目使用的应用程序会被分组到不同的工作空间。不是每一个人都需要甚至是喜欢工作空间，但是我提到它是因为，作为一个新手，你可能无意间通过一个组合键切换了工作空间，然后，“喂！我的应用程序哪去了?” 如果你看到的还是你熟悉的桌面壁纸，那你可能只是切换了工作空间，你所有的应用程序还在一个工作空间运行，只是现在不可见而已。在很多 Linux 环境中，通过敲击 Alt+Ctrl 和一个箭头（上、下、左或右）可以切换工作空间。很有可能发现你的应用程序一直都在另一个工作空间里运行。当然，如果你刚好喜欢工作空间（很多人都喜欢），然后你就发现了一个 Linux 很有用的默认功能。设置许多 Linux 图形环境提供一些类型的设置程序或是面板让你在机器上配置设置。值得注意的是类似 Windows 和 MacOS，Linux 可以配置好很多细节，但不是所有的详细设置都可以在设置程序上找到。但是这些设置项已经足够满足大部分典型的桌面系统，比如选择桌面壁纸，改变熄屏时间，连接打印机等其他一些设置。和 Windows 或者 MacOS 相比，Linux 的应用程序设置的分组或是命名都有不同的方式。甚至同是 Linux 系统，不同的图形界面也会出现不同的设置，这可能需要时间适应。当然，在你的图形环境中设置配置的问题可以通过在线查询这样不错的方法解决。应用程序最后，Linux 的应用程序也可能不同。你可能会发现一些熟悉的应用程序，但是对你来说更多的将会是崭新的应用。比如说，你能在 Linux 上找到 Firefox、Chrome 和 Skype。如果不能找到特定的应用程序，通常你能使用一些替代程序。如果还是不能，那你可以使用 WINE 这样的兼容层来运行 Windows 的应用程序。在很多 Linux 图形环境中，你可以通过敲击 Windows 的标志键来打开应用程序菜单栏。在其他一些情况中，你不得不点击开始（主）按钮或应用程序菜单。很多图形环境中，你可以通过分类搜索到应用程序而不一定需要它的特定程序名。比如说，你要使用一个你不清楚名字的编辑器程序，这时候，你可以在应用程序菜单栏键的搜索框中键入“editor”字样，它将为你展示一个甚至更多的被认为是编辑器类的应用程序。为帮你起步，这里列举了一点可能成为 Linux 系统使用的替代程序。请注意，Linux 提供了大量的满足你需求的选择，这张表里列举的一点也不完整。via: https://www.linux.com/blog/learn/2017/12/migrating-linux-graphical-environments作者：John Bonesio 译者：CYLeft 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
在你的主要桌面计算机上安装和使用 Linux 将帮你快速熟悉你需要的工具和方法。这是我们的迁移到 Linux 系列文章的第二篇。如果你错过了第一篇，你可以在这里找到它。就如之前提到过的，为什么要迁移到 Linux 的有几个原因。你可以在你的工作中为 Linux 开发和使用代码，或者，你可能只是想去尝试一下新事物。不论是什么原因，在你主要使用的桌面计算机上拥有一个 Linux，将帮助你快速熟悉你需要的工具和方法。在这篇文章中，我将介绍 Linux 的文件、文件系统和磁盘。我的 C:\ 在哪里？如果你是一个 Mac 用户，Linux 对你来说应该非常熟悉，Mac 使用的文件、文件系统、和磁盘与 Linux 是非常接近的。另一方面，如果你的使用经验主要是 Windows，访问 Linux 下的磁盘可能看上去有点困惑。一般，Windows 给每个磁盘分配一个盘符（像 C:\）。而 Linux 并不是这样。而在你的 Linux 系统中它是一个单一的文件和目录的层次结构。让我们看一个示例。假设你的计算机使用了一个主硬盘、一个有 Books 和 Videos 目录的 CD-ROM 、和一个有 Transfer 目录的 U 盘，在你的 WIndows 下，你应该看到的是下面的样子：C:\ [硬盘] ├ System ├ System32 ├ Program Files ├ Program Files (x86) └ <更多目录> D:\ [CD-ROM] ├ Books └ Videos E:\ [U 盘] └ Transfer 而一个典型的 Linux 系统却是这样：/ (最顶级的目录，称为根目录) [硬盘] ├ bin ├ etc ├ lib ├ sbin ├ usr ├ <更多目录> └ media └ <你的用户名> ├ cdrom [CD-ROM] │ ├ Books │ └ Videos └ Kingme_USB [U 盘] └ Transfer 如果你使用一个图形化环境，通常，Linux 中的文件管理器将出现看起来像驱动器的图标的 CD-ROM 和 USB 便携式驱动器，因此，你根本就无需知道介质所在的目录。文件系统Linux 称这些东西为文件系统。文件系统是在介质（比如，硬盘）上保持跟踪所有的文件和目录的一组结构。如果没有用于存储数据的文件系统，我们所有的信息就会混乱，我们就不知道哪个块属于哪个文件。你可能听到过一些类似 ext4、XFS 和 Btrfs 之类的名字，这些都是 Linux 文件系统。每种保存有文件和目录的介质都有一个文件系统在上面。不同的介质类型可能使用了为它优化过的特定的文件系统。比如，CD-ROM 使用 ISO9660 或者 UDF 文件系统类型。USB 便携式驱动器一般使用 FAT32，以便于它们可以很容易去与其它计算机系统共享。Windows 也使用文件系统。不过，我们不会过多的讨论它。例如，当你插入一个 CD-ROM，Windows 将读取 ISO9660 文件系统结构，分配一个盘符给它，然后，在盘符（比如，D:\）下显示文件和目录。当然，如果你深究细节，从技术角度说，Windows 是分配一个盘符给一个文件系统，而不是整个驱动器。使用同样的例子，Linux 也读取 ISO9660 文件系统结构，但它不分配盘符，它附加文件系统到一个目录（这个过程被称为 挂载 mount ）。Linux 将随后在所挂载的目录（比如是， /media/<your user name>/cdrom ）下显示 CD-ROM 上的文件和目录。因此，在 Linux 上回答 “我的 C:\ 在哪里？” 这个问题，答案是，这里没有 C:\，它们工作方式不一样。文件Windows 将文件和目录（也被称为文件夹）存储在它的文件系统中。但是，Linux 也让你将其它的东西放到文件系统中。这些其它类型的东西是文件系统的原生的对象，并且，它们和普通文件实际上是不同的。除普通文件和目录之外，Linux 还允许你去创建和使用 硬链接 hard link 、 符号链接 symbolic link 、 命名管道 named pipe 、 设备节点 device node 、和 套接字 socket 。在这里，我们不展开讨论所有的文件系统对象的类型，但是，这里有几种经常使用到的需要知道。硬链接用于为文件创建一个或者多个别名。指向磁盘上同样内容的每个别名的名字是不同的。如果在一个文件名下编辑文件，这个改变也同时出现在其它的文件名上。例如，你有一个 MyResume_2017.doc，它还有一个被称为 JaneDoeResume.doc 的硬链接。（注意，硬链接是从命令行下，使用 ln 的命令去创建的）。你可以找到并编辑 MyResume_2017.doc，然后，然后找到 JaneDoeResume.doc，你发现它保持了跟踪 —— 它包含了你所有的更新。符号链接有点像 Windows 中的快捷方式。文件系统的入口包含一个到其它文件或者目录的路径。在很多方面，它们的工作方式和硬链接很相似，它们可以创建一个到其它文件的别名。但是，符号链接也可以像文件一样给目录创建一个别名，并且，符号链接可以指向到不同介质上的不同文件系统，而硬链接做不到这些。（注意，你可以使用带 -s 选项的 ln 命令去创建一个符号链接）权限Windows 和 Linux 另一个很大的区别是涉及到文件系统对象（文件、目录、及其它）的权限。Windows 在文件和目录上实现了一套非常复杂的权限。例如，用户和用户组可以有权限去读取、写入、运行、修改等等。用户和用户组可以授权访问除例外以外的目录中的所有内容，也可以不允许访问除例外的目录中的所有内容。然而，大多数使用 Windows 的人并不会去使用特定的权限；因此，当他们发现在 Linux 上是强制使用一套默认权限时，他们感到非常惊讶！Linux 通过使用 SELinux 或者 AppArmor 可以强制执行一套更复杂的权限。但是，大多数 Linux 安装版都只是使用了内置的默认权限。在默认的权限中，文件系统中的每个条目都有一套为它的文件所有者、文件所在的组、和其它人的设置的权限。这些权限允许他们：读取、写入和运行。给它们的权限是有层次继承的。首先，它检查这个（登入的）用户是否为该文件所有者和拥有的权限。如果不是，然后检查这个用户是否在文件所在的组中和该组拥有的权限。如果不是，然后它再检查其它人拥有的权限。这里设置了其它人的权限。但是，这里设置的三套权限大多数情况下都会使用其中的一套。如果你使用命令行，你输入 ls -l，你可以看到如下所表示的权限：rwxrw-r-- 1 stan dndgrp 25 Oct 33rd 25:01 rolldice.sh 最前面的字母，rwxrw-r--，展示了权限。在这个例子中，所有者（stan）可以读取、写入和运行这个文件（前面的三个字母，rwx）；dndgrp 组的成员可以读取和写入这个文件，但是不能运行（第二组的三个字母，rw-）；其它人仅可以读取这个文件（最后的三个字母，r--）。（注意，在 Windows 中去生成一个可运行的脚本，你生成的文件要有一个特定的扩展名，比如 .bat，而在 Linux 中，扩展名在操作系统中没有任何意义。而是需要去设置这个文件可运行的权限）如果你收到一个 “permission denied” 错误，可能是你去尝试运行了一个要求管理员权限的程序或者命令，或者你去尝试访问一个你的帐户没有访问权限的文件。如果你尝试去做一些要求管理员权限的事，你必须切换登入到一个被称为 root 的用户帐户。或者通过在命令行使用一个被称为 sudo 的辅助程序。它可以临时允许你以 root 权限运行。当然，sudo 工具，也会要求你输入密码，以确保你真的有权限。硬盘文件系统Windows 主要使用一个被称为 NTFS 的硬盘文件系统。在 Linux 上，你也可以选一个你希望去使用的硬盘文件系统。不同的文件系统类型呈现不同的特性和不同的性能特征。现在主流的原生 Linux 的文件系统是 Ext4。但是，在安装 Linux 的时候，你也有丰富的文件系统类型可供选择，比如，Ext3（Ext4 的前任）、XFS、Btrfs、UBIFS（用于嵌入式系统）等等。如果你不确定要使用哪一个，Ext4 是一个很好的选择。via: https://www.linux.com/blog/learn/intro-to-linux/2017/11/migrating-linux-disks-files-and-filesystems作者：JOHN BONESIO 译者：qhwdw 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
这个新文章系列将帮你从其他操作系统迁移到 Linux。运行 Linux 的计算机系统到遍布在每个角落。Linux 运行着从谷歌搜索到“脸书”等等各种互联网服务。Linux 也在很多设备上运行，包括我们的智能手机、电视，甚至汽车。当然，Linux 也可以运行在您的桌面系统上。如果您是 Linux 新手，或者您想在您的桌面计算机上尝试一些不同的东西，这篇文章将简要地介绍其基础知识，并帮助您从另一个系统迁移到 Linux。切换到不同的操作系统可能是一个挑战，因为每个操作系统都提供了不同的操作方法。其在一个系统上的 习惯 second nature 可能会对另一个系统的使用形成阻挠，因此我们需要到网上或书本上查找怎样操作。Windows 与 Linux 的区别（LCTT 译注：本节标题 Vive la différence ，来自于法语，意即“差异万岁”——来自于 wiktionary）要开始使用 Linux，您可能会注意到，Linux 的打包方式不同。在其他操作系统中，许多组件被捆绑在一起，只是该软件包的一部分。然而，在 Linux 中，每个组件都被分别调用。举个例子来说，在 Windows 下，图形界面只是操作系统的一部分。而在 Linux 下，您可以从多个图形环境中进行选择，比如 GNOME、KDE Plasma、Cinnamon 和 MATE 等。从更高层面上看，一个 Linux 包括以下内容：内核驻留在磁盘上的系统程序和文件图形环境包管理器应用程序内核操作系统的核心称为 内核 kernel 。内核是引擎罩下的引擎。它允许多个应用程序同时运行，并协调它们对公共服务和设备的访问，从而使所有设备运行顺畅。系统程序和文件系统程序以标准的文件和目录的层次结构位于磁盘上。这些系统程序和文件包括后台运行的服务（称为 守护进程 deamon ）、用于各种操作的实用程序、配置文件和日志文件。这些系统程序不是在内核中运行，而是执行基本系统操作的程序——例如，设置日期和时间，以及连接网络以便你可以上网。这里包含了 初始化 init 程序——它是最初运行的程序。该程序负责启动所有后台服务（如 Web 服务器）、启动网络连接和启动图形环境。这个初始化程序将根据需要启动其它系统程序。其他系统程序为简单的任务提供便利，比如添加用户和组、更改密码和配置磁盘。图形环境图形环境实际上只是更多的系统程序和文件。图形环境提供了常用的带有菜单的窗口、鼠标指针、对话框、状态和指示器等。需要注意的是，您不是必须需要使用原本安装的图形环境。如果你愿意，你可以把它换成其它的。每个图形环境都有不同的特性。有些看起来更像 Apple OS X，有些看起来更像 Windows，有些则是独特的而不试图模仿其他的图形界面。包管理器对于来自不同操作系统的人来说， 包管理器 package manager 比较难以掌握，但是现在有一个人们非常熟悉的类似的系统——应用程序商店。软件包系统实际上就是 Linux 的应用程序商店。您可以使用包管理器来选择您想要的应用程序，而不是从一个网站安装这个应用程序，而从另一个网站来安装那个应用程序。然后，包管理器会从预先构建的开源应用程序的中心仓库安装应用程序。应用程序Linux 附带了许多预安装的应用程序。您可以从包管理器获得更多。许多应用程序相当棒，另外一些还需要改进。有时，同一个应用程序在 Windows 或 Mac OS 或 Linux 上运行的版本会不同。例如，您可以使用 Firefox 浏览器和 Thunderbird (用于电子邮件)。您可以使用 LibreOffice 作为 Microsoft Office 的替代品，并通过 Valve 的 Steam 程序运行游戏。您甚至可以在 Linux 上使用 WINE 来运行一些 Windows 原生的应用程序。安装 Linux第一步通常是安装 Linux 发行版。你可能听说过 Red Hat、Ubuntu、Fedora、Arch Linux 和 SUSE，等等。这些都是 Linux 的不同发行版。如果没有 Linux 发行版，则必须分别安装每个组件。许多组件是由不同人群开发和提供的，因此单独安装每个组件将是一项冗长而乏味的任务。幸运的是，构建发行版的人会为您做这项工作。他们抓取所有的组件，构建它们，确保它们可以在一起工作，然后将它们打包在一个单一的安装套件中。各种发行版可能会做出不同的选择、使用不同的组件，但它仍然是 Linux。在一个发行版中开发的应用程序通常在其他发行版上运行的也很好。如果你是一个 Linux 初学者，想尝试 Linux，我推荐安装 Ubuntu。还有其他的发行版也可以尝试: Linux Mint、Fedora、Debian、Zorin OS、Elementary OS 等等。在以后的文章中，我们将介绍 Linux 系统的其他方面，并提供关于如何开始使用 Linux 的更多信息。via: https://www.linux.com/blog/learn/intro-to-linux/2017/10/migrating-linux-introduction作者：John Bonesio 译者：stevenzdg988 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
Lush 说这是可能的。在不到一个月内将你的核心业务从一个公共云迁移到另一个公共云看起来像是一个遥不可及的目标，但是英国化妆品巨头 Lush 认为可以做到这一点。去年九月 Lush —— 你也许知道它是那些糖果色的、好闻的沐浴和护肤产品背后的公司 —— 与已有的基础设施供应商 Acquia 的合同快要到期了。Acquia 已经在 AWS 中托管了 Lush 的基于 Drupal 的电子商务环境好几年了，但该零售商想要退出合作。根据 Lush 的首席数字官及公司的继承人 Jack Constantine（他的父母在 1995 年成立该公司）的说法，该安排是“尴尬”和僵硬的。他今天在旧金山举行的 Google Cloud Next 会议上说：“我们不太满意那份合同，我们想看看我们还能做些什么。”“那是一个非常封闭的环境，这使我们难于看清下一步做什么。”“(我们) 可以再签署一年，在此期间想出一个有更多的控制权的长期计划，但是（我们）最终结束了这种挣扎。”在淘遍市场后，Lush 目标放在 Google 的云平台上。该公司已经很熟悉 Google 了，已于 2013 年底从 Scalix 迁移到 Google Apps（现称为 G Suite）上。然而，只有几个月不到的时间进行迁移，要赶在 12 月 22 日现有合同截止前和圣诞节购物的关键时期前。Constantine 说：“所以这不仅仅是有点关键的业务，我们要考虑高峰交易期，那时会有巨大的交易。”Lush 摆脱了官僚主义意味着 Constantine 能够在选择供应商上快速决定。他说：“接着团队只要全力进行就行。”他们还为这次迁移专门优先优化了用于迁移的 “一体化” Drupal 程序，而把 bug 修复推到以后。Lush 12 月 1 日开始物理迁移，12 月 22 日完成。团队“像其他迁移一样”遇到了挑战，Constantine 说：“你肯定会担心将数据从一个地方传输到另一个地方，你必须确保一致性，客户、产品数据等需要稳定。”但是，这位 CDO 表示，让公司采用这个难以置信的紧张时间表是因为团队缺乏备选方案: 没有后备计划。Constantine 说：“在截止日期前的一个星期，我的同事和我们的 Google 合作伙伴打了电话，他们对这是否会发生有点紧张，他们问我们 Plan B 是什么，我的同事说：Plan B 就是让 Plan A，就是这样”。“当你抛出这样一个听起来有点难以置信的艰难的截止日期时，而（你需要保持）关注那些认为这是我们可在这个时间范围内可以实现的目标的人，而不是那些放置阻碍说‘我们必须要延期’的人。”“是的，每个人都很紧张，但你实现了很多。你实际上完成并盯牢了它。你所要做的就是完成、完成。”现在的重点是将该电子商务应用转移到微服务架构，同时研究各种 Google 工具，如 Kubernetes 容器管理系统和 Spanner 关系数据库。Constantine 说，该零售商最近也建立了使用 GCP 和 Android 的原型 POS 系统。（题图：Lush's Oxford St, UK store. Credit: Lush）via: https://www.itnews.com.au/news/a-public-cloud-migration-in-22-days-454186作者：Allie Coyne 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
自从甲骨文收购 MySQL 后，由于甲骨文对 MySQL 的开发和维护更多倾向于闭门的立场，很多 MySQL 的开发者和用户放弃了 MySQL。在社区驱动下，促使更多人移到 MySQL 的另一个叫 MariaDB 的分支。在原有 MySQL 开发人员的带领下，MariaDB 的开发遵循开源的理念，并确保它的二进制格式与 MySQL 兼容。Linux 发行版如 Red Hat 家族（Fedora，CentOS，RHEL），Ubuntu 和 Mint，openSUSE 和 Debian 已经开始使用，并支持 MariaDB 作为 MySQL 的直接替换品。如果你想要将 MySQL 中的数据库迁移到 MariaDB 中，这篇文章就是你所期待的。幸运的是，由于他们的二进制兼容性，MySQL-to-MariaDB 迁移过程是非常简单的。如果你按照下面的步骤，将 MySQL 迁移到 MariaDB 会是无痛的。准备 MySQL 数据库和表出于演示的目的，我们在做迁移之前在数据库中创建一个测试的 MySQL 数据库和表。如果你在 MySQL 中已经有了要迁移到 MariaDB 的数据库，跳过此步骤。否则，按以下步骤操作。在终端输入 root 密码登录到 MySQL 。$ mysql -u root -p 创建一个数据库和表。mysql> create database test01; mysql> use test01; mysql> create table pet(name varchar(30), owner varchar(30), species varchar(20), sex char(1)); 在表中添加一些数据。mysql> insert into pet values('brandon','Jack','puddle','m'),('dixie','Danny','chihuahua','f'); 退出 MySQL 数据库.备份 MySQL 数据库下一步是备份现有的 MySQL 数据库。使用下面的 mysqldump 命令导出现有的数据库到文件中。运行此命令之前，请确保你的 MySQL 服务器上启用了二进制日志。如果你不知道如何启用二进制日志，请参阅结尾的教程说明。$ mysqldump --all-databases --user=root --password --master-data > backupdb.sql 现在，在卸载 MySQL 之前先在系统上备份 my.cnf 文件。此步是可选的。$ sudo cp /etc/mysql/my.cnf /opt/my.cnf.bak 卸载 MySQL首先，停止 MySQL 服务。$ sudo service mysql stop 或者:$ sudo systemctl stop mysql 或:$ sudo /etc/init.d/mysql stop 然后继续下一步，使用以下命令移除 MySQL 和配置文件。在基于 RPM 的系统上 (例如, CentOS, Fedora 或 RHEL):$ sudo yum remove mysql* mysql-server mysql-devel mysql-libs $ sudo rm -rf /var/lib/mysql 在基于 Debian 的系统上(例如, Debian, Ubuntu 或 Mint):$ sudo apt-get remove mysql-server mysql-client mysql-common $ sudo apt-get autoremove $ sudo apt-get autoclean $ sudo deluser mysql $ sudo rm -rf /var/lib/mysql 安装 MariaDB在 CentOS/RHEL 7和Ubuntu（14.04或更高版本）上，最新的 MariaDB 已经包含在其官方源。在 Fedora 上，自19 版本后 MariaDB 已经替代了 MySQL。如果你使用的是旧版本或 LTS 类型如 Ubuntu 13.10 或更早的，你仍然可以通过添加其官方仓库来安装 MariaDB。MariaDB 网站 提供了一个在线工具帮助你依据你的 Linux 发行版中来添加 MariaDB 的官方仓库。此工具为 openSUSE, Arch Linux, Mageia, Fedora, CentOS, RedHat, Mint, Ubuntu, 和 Debian 提供了 MariaDB 的官方仓库.下面例子中，我们使用 Ubuntu 14.04 发行版和 CentOS 7 配置 MariaDB 库。Ubuntu 14.04$ sudo apt-get install software-properties-common $ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db $ sudo add-apt-repository 'deb http://mirror.mephi.ru/mariadb/repo/5.5/ubuntu trusty main' $ sudo apt-get update $ sudo apt-get install mariadb-server CentOS 7以下为 MariaDB 创建一个自定义的 yum 仓库文件。$ sudo vi /etc/yum.repos.d/MariaDB.repo [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/5.5/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 $ sudo yum install MariaDB-server MariaDB-client 安装了所有必要的软件包后，你可能会被要求为 MariaDB 的 root 用户创建一个新密码。设置 root 的密码后，别忘了恢复备份的 my.cnf 文件。$ sudo cp /opt/my.cnf /etc/mysql/ 现在启动 MariaDB 服务。$ sudo service mariadb start 或:$ sudo systemctl start mariadb 或:$ sudo /etc/init.d/mariadb start 导入 MySQL 的数据库最后，我们将以前导出的数据库导入到 MariaDB 服务器中。$ mysql -u root -p < backupdb.sql 输入你 MariaDB 的 root 密码，数据库导入过程将开始。导入过程完成后，将返回到命令提示符下。要检查导入过程是否完全成功，请登录到 MariaDB 服务器，并查看一些样本来检查。$ mysql -u root -p MariaDB [(none)]> show databases; MariaDB [(none)]> use test01; MariaDB [test01]> select * from pet; 结论如你在本教程中看到的，MySQL-to-MariaDB 的迁移并不难。你应该知道，MariaDB 相比 MySQL 有很多新的功能。至于配置方面，在我的测试情况下，我只是将我旧的 MySQL 配置文件（my.cnf）作为 MariaDB 的配置文件，导入过程完全没有出现任何问题。对于配置文件，我建议你在迁移之前请仔细阅读 MariaDB 配置选项的文件，特别是如果你正在使用 MySQL 的特定配置。如果你正在运行有海量的表、包括群集或主从复制的数据库的复杂配置，看一看 Mozilla IT 和 Operations 团队的 更详细的指南 ，或者 官方的 MariaDB 文档。故障排除1、 在运行 mysqldump 命令备份数据库时出现以下错误。$ mysqldump --all-databases --user=root --password --master-data > backupdb.sql mysqldump: Error: Binlogging on server not active 通过使用 "--master-data"，你可以在导出的输出中包含二进制日志信息，这对于数据库的复制和恢复是有用的。但是，二进制日志未在 MySQL 服务器启用。要解决这个错误，修改 my.cnf 文件，并在 [mysqld] 部分添加下面的选项。（LCTT 译注：事实上，如果你并没有启用二进制日志，那取消"--master-data"即可。）log-bin=mysql-bin 保存 my.cnf 文件，并重新启动 MySQL 服务：$ sudo service mysql restart 或者:$ sudo systemctl restart mysql 或:$ sudo /etc/init.d/mysql restart via: http://xmodulo.com/migrate-mysql-to-mariadb-linux.html作者：Kristophorus Hadiono 译者：strugglingyouth 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出