如何在有免费软件和/或没有云的 N 台计算机之间同步 Ubuntu/软件/配置?

ska*_*tek 8 configuration-management

注意:这个问题不是关于以类似 Dropbox 的方式(文件、文件夹)同步数据,而是关于同步配置。

我希望拥有完全相同版本的 Ubuntu,并且在我的台式机和笔记本电脑(也可能在我的小型上网本 PC)上安装和配置所有软件,而不使用 Ubuntu Sync 和最少的维护工作(设置一次,长时间运行)。

用例如下:

  1. 我在笔记本电脑上工作并对软件配置进行了一些更改,例如:

    • 配置vim 以拥有一个新插件
    • 更新 Search Tracker / Recoll 文件搜索索引
    • 配置 Thunderbird 以拥有额外的 IMAP 帐户(“记住密码”)
    • 在 Firefox/Chrome 中添加一些新书签
    • 更改桌面背景图像
    • 安装新软件 apt-get install
    • 构建和安装新软件 checkinstall
    • 等等。
  2. 我做了一些“同步”操作

  3. 我切换到我的台式电脑,并从中获取所有的变化(1)在台式PC上工作
  4. 我在台式 PC 上工作并对软件配置进行了一些更改,例如:

    • 将新目录添加到要由 DejaDup 备份的目录列表中
    • 向 Libreoffice Writer 添加新的拼写检查字典
    • 将终结者软件配置为具有彩色字体
    • 在 Ubuntu 系统中安装新字体
    • 配置 Ekiga 以拨打电话
    • 等等。
  5. 我做了一些“同步”操作

  6. 我切换到我的笔记本电脑并从笔记本电脑获取所有更改(1)(4)在笔记本电脑上工作。

问:我可以使用哪些免费/开源软件来同步两台机器的 Ubuntu 系统、安装的软件和配置?如果没有任何云服务,是否可以做到这一点?

补充问题:台式机和笔记本电脑的硬件配置明显不同。有问题的“同步软件”如何处理视频驱动程序、WLAN 驱动程序及其配置?

注意:我不需要同时同步所有 PC,因为我一次只使用一台机器。

注:我考虑过用Chef来解决这个问题,但是好像维护这样的设置可能真的很麻烦

注意:我也考虑过使用安装了 Ubuntu 的可引导 USB(便携式 Linux),但我不确定视频驱动程序是否能正常工作。

mni*_*ess 4

据我了解,您的意图是:

  1. 同步已安装的应用程序
  2. 同步您的工作
  3. 同步您的点文件(配置)

无论您做什么,您都需要某种云服务。它不一定是 Dropbox。我强烈推荐Seafile。我在家里的 Raspberry Pi 上运行它来满足我的同步需求。他们的文档很容易理解。

1. 应用程序同步

在 13.10 之前,这是一个开箱即用的功能。今天我会使用 Ansible 或其他配置管理解决方案(例如 puppet 或 Chef)。Anible Playbook 指定了您想要安装的内容。您可以使用 Seafile 保持同步并使用 cron 作业来运行 Ansible。

2. 同步您的工作

在这里我肯定会使用Seafile。它允许您同步您选择的任何文件夹,并且不会将您限制在单个Dropbox之类的文件夹中。

3. 点文件

您当然可以将它们与 Seafile 同步。更好的选择是将所有点文件置于 git 版本控制之下。您可以加入人群并将您的点文件放在 github 上或使用您自己的服务器作为中介。当然需要一些 git 的基础知识。


joh*_*ohn 1

您可以将主目录移动到闪存驱动器。这是大多数程序存储其配置的位置,编译后的程序可以使用./configure --prefix=/home/YOURNAME/bin(或任何其他目录)安装在那里。唯一不起作用的是自动同步使用 apt-get 安装的软件包。

对于安装 synaptic,在单击检查以安装这些软件包之前,单击“将标记另存为...”,这将允许您保存将要安装的所有软件包的列表。当您打开笔记本电脑时,运行 synaptic,然后使用“读取标记”来获取您需要的文件列表。然后单击复选标记以在其他计算机上安装相同的文件。

此解决方案不会有任何驱动程序问题,因为操作系统本身不共享,仅共享配置、用户文件等。如果您不想在闪存驱动器上移动所有文件,则可以将它们存储在另一个文件夹中(如 /home/myfiles),不必有与之关联的用户。

如果您想要执行此操作,则必须执行以下步骤:

  1. 将主文件夹的内容复制到闪存驱动器。
  2. 将闪存驱动器重新安装到您的主文件夹位置。
  3. 将闪存驱动器添加到文件 /etc/fstab 中,安装点位于您的主文件夹中。

这样做的作用是,当您的计算机使用闪存驱动器启动时,Ubuntu 将正常启动,但将闪存驱动器视为您的普通主文件夹。如果计算机抱怨闪存驱动器无法启动,那么您可以通过将闪存驱动器选项从列表中移至硬盘驱动器下方,更改 BIOS 设置以停止从闪存驱动器启动。

如果您在执行其中任何操作时需要帮助,可以在评论中询问。此外,您无法在计算机运行时删除闪存驱动器,因为卸载它意味着从系统中删除您的主文件夹。

以下是上述步骤的详细列表:

在开始之前:

闪存驱动器还没有真正准备好使用,从技术上讲它可以按原样使用,但这不是一个好主意。大多数闪存驱动器使用 fat32,它与 Linux 兼容,也与其他所有内容兼容,但不支持 Linux 的大部分功能,因此应将其更改为 ext2,可以使用 ext3/4,但日志可能会损坏闪存驱动器,但它确实在断电时保护文件,所以如果您想先讨论这个问题,可以发表评论。

请注意,Ext 仅适用于 linux,但这无论如何都不会在非 Linux 计算机之间共享设置,因此如果您需要它跨平台工作,则只会共享用户文件(并且分区将无法共享) Ext),但如果这仅适用于 Linux,并且仅适用于一个桌面环境(在您使用的每台计算机上),那么它将正常工作。(即使在同一台计算机上,也很难让不同的桌面环境共享设置)

打开磁盘工具(应该可以使用启动器访问),您需要输入密码。然后选择闪存驱动器,记下右上角的设备(它应该看起来像 /dev/sdb 或类似的东西)。然后单击“卸载卷”。

然后单击“格式化卷”,最重要的是闪存驱动器上的所有内容都将被删除。在出现的菜单上单击类型下拉列表并选择 Ext2 或您选择的任何文件系统(告诉我您是否选择另一个文件系统,因为挂载和 fstab 需要知道类型)。单击格式按钮并等待其完成。

步骤1:

这是最简单的,将闪存驱动器插入每台计算机并运行类型,其中cp -r /home/USER /mount/FLASHDRIVE用户和闪存驱动器是您的主文件夹和闪存驱动器的位置。这也适用于隐藏文件(正如我提到的,这很重要)。其中最困难的部分是同名的文件将被覆盖,因此请确保您使用的最后一台计算机具有您最想要的设置。另外,对于即将进行的测试,添加一个名为 的文件It Works,它不必包含任何内容。

第 2 步:您可能应该跳过此步骤

当我写最初的回复时,我并没有真正考虑过这会带来多大的影响。当我在我的计算机上测试它时,它不起作用,而且它并不是真正必要的,而且当你运行它时,你的计算机会发生奇怪的事情,这可能会让你感到困惑。

只需在一台计算机上完成此操作作为测试,以确保一切正常。运行sudo umount /dev/sdXY其中 XY 是您之前获得的设备,后跟 1(因此,如果它是 /dev/sdb,请写入 /dev/sdb1)。然后运行这些命令:

sudo shutdown now
mount -t ext2 /dev/sXY /home/USER
telinit 5
Run Code Online (Sandbox Code Playgroud)

关机实际上并不会关闭计算机,它会将您置于单用户模式,这样您就可以在不使用文件系统的情况下处理文件系统,但您将被注销,因此当系统完全更改时不要惊慌。

然后登录,此时您的主文件夹应该是闪存驱动器。如果之前创建的文件现在位于您的主文件夹中,则主文件夹必须是闪存驱动器,这样您就可以继续下一步。如果没有请给我评论。

步骤3:

这必须在每台运行的计算机上完成sudo gedit /etc/fstab。然后切换到出现的文本编辑器。(如果您使用的是 KDE,则应将 gedit 替换为 kate 或您使用的任何文本编辑器。然后将此行添加到文件底部,根据需要替换全部大写的部分。

/dev/sdXY /home/USER ext2 errors=remount-ro 0 1
Run Code Online (Sandbox Code Playgroud)

其中 XY 是您之前获得的设备,后跟 1(因此,如果它是 /dev/sdb,则写入 /dev/sdb1)

此时重新启动计算机,闪存驱动器应该已替换您的旧主文件夹,所有设置都保存到驱动器,并且驱动器上的所有文件都位于您的主文件夹中。您应该检查您的主文件夹中是否有“It Worked”文件以确定。