I have two machines that I use at different times. I would like certain changes I make to one machine (create/delete files, install/uninstall applications) to appear in the other. I currently use homeshick to manage my dot files and I can synchronize between machines through git. I also use syncthing to synchronize files. However I don't have a method to synchronize installed/uninstalled applications. I would also like certain files/applications to remain unsynchronized across the machines.

What is a reliable way to achieve this?

  • Perhaps you should use a NAS. Mount /bin, /sbin, /lib, /var from your local drive, and mount /etc, /usr, /opt, /srv, /home from your NAS. Or just go full PXE.
    – Stewart
    Feb 25, 2021 at 18:43
  • Syncing files is trivial. You can do that as per what @Stewart said or using tools like etckeeper, rsync or syncthing. Syncing package installs however is somewhat more difficult. Maybe use a tool like salt or ansible and be sure to sync and commit the changed config files?
    – tanto
    Feb 26, 2021 at 19:32

1 Answer 1


You can use Ansible to do this. It is a tool to automate management of machines, and it can install/remove packages.

I have the following playbook for packages that I want to have installed on all* my machines, to be run after new install of a machine.

--- # Post install operating system

- hosts: most
  remote_user: ansible
  become: yes
  become_method: sudo
  connection: ssh
  gather_facts: yes
  - name: "Install packages"
      name: "{{ item }}"
      state: present
      - anki
      - binutils
      - clusterssh
      - dmidecode
      - etckeeper
      - fortune-mod
      - gcc
      - gitk
      - gpm
      - hdparm
      - htop
      - inotify-tools
      - kdiff3
      - keychain
      - kmplayer
      - libreoffice

* All machines included in the most group.

  • Thanks, this looks promising I will try it out. Oct 10, 2021 at 8:34

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .