Provided by: profile-sync-daemon_6.50-1_all bug

NAME

       profile-sync-daemon  -  Symlinks  and  syncs browser profiles to RAM (tmpfs) thus reducing
       HDD/SSD calls and speeding up browsers.

DESCRIPTION

       Profile-sync-daemon  (psd)  is  a  tiny   pseudo-daemon   designed   to   manage   browser
       profile/profiles  in  tmpfs  and to periodically sync back to the physical disc (HDD/SSD).
       This is accomplished by an innovative use of rsync to maintain synchronization  between  a
       tmpfs  copy  and  media-bound  backup  of  the browser profile/profiles. Additionally, psd
       features several crash-recovery features.

       Design goals of psd:

              •  Completely transparent user experience.

              •  Reduced wear to physical discs (particularly SSDs).

              •  Speed.

       Since the profile/profiles, browser cache*, etc. are relocated into tmpfs (RAM disk),  the
       corresponding  I/O  associated with using the browser is also redirected from the physical
       disc to  the  RAM,  thus  reducing  wear  to  the  physical  disc  and  improving  browser
       responsiveness.

       *Note  that some browsers such as Chrome/Chromium, Firefox (since v21), Midori, and Rekonq
       actually keep their cache directories separate from their browser profile directory. It is
       not  within  the  scope  of  profile-sync-daemon to modify this behavior; users wishing to
       relocate this directory,  may  refer  to  the  following  url  for  several  work-arounds:
       https://wiki.archlinux.org/index.php/Chromium_Tips_and_Tweaks#Cache_in_tmpfs

SETUP

       $XDG_CONFIG_HOME/psd/psd.conf  (referred  to  hereafter as "the config file") contains all
       user managed settings.

       NOTE: edits made to the config file while psd is active will be  applied  only  after  the
       service has been restarted.

              •  Optionally  enable  the  use  of  overlayfs  to  improve sync speed and to use a
                 smaller memory footprint. Do this in the USE_OVERLAYFS variable. The  user  will
                 require  no  password  sudo  rights  to  /usr/bin/psd-overlay-helper to use this
                 option and the kernel must support overlayfs version 22 or higher. See  the  FAQ
                 below for additional details.

              •  Optionally  have  psd  resync  to the filesystem prior to a sleep call. This can
                 help in the event that the system does not properly wake  up.  Do  this  in  the
                 USE_SUSPSYNC variable.

              •  Optionally  define  which  browsers  are to be managed in the BROWSERS array. If
                 none are defined, the default is all detected browsers.

              •  Optionally disable the use of crash-recovery  snapshots  (not  recommended).  Do
                 this in the USE_BACKUPS variable.

              •  Optionally define the number of crash-recovery snapshots to keep. Do this in the
                 BACKUP_LIMIT variable.

       NOTE:   occasionally,   updates/changes   are   made   to   the   default   config    file
       (/usr/share/psd/psd.conf)  upstream.  The  user  copy ($XDG_CONFIG_HOME/psd/psd.conf) will
       need to be diffed against it.

RUNNING PSD

   PREVIEW MODE
       The preview option can be called to show users exactly what psd will do/is doing based  on
       the  entries  in  the config file. It will also provide useful information such as profile
       size, paths, and if any recovery snapshots have been created.

        $ psd p

        Profile-sync-daemon v6.39

        systemd service: active
        resync-timer:    active
        sync on sleep:   enabled
        use overlayfs:   enabled

        Psd will manage the following per /home/facade/.config/psd/.psd.conf settings:

         browser/psname:  chromium/chromium
         owner/group id:  facade/100
         sync target:     /home/facade/.config/chromium
         tmpfs dir:       /run/user/1000/facade-chromium
         profile size:    93M
         overlayfs size:  39M
         recovery dirs:   2 <- delete with the c option
          dir path/size:  /home/facade/.config/chromium-backup-crashrecovery-20200423_171359 (92M)
          dir path/size:  /home/facade/.config/chromium-backup-crashrecovery-20200424_112204 (93M)

         browser/psname:  firefox/firefox
         owner/group id:  facade/100
         sync target:     /home/facade/.mozilla/firefox/f8cv8bfu.default
         tmpfs dir:       /run/user/1000/facade-firefox-f8cv8bfu.default

         profile size:    145M
         overlayfs size:  13M
         recovery dirs:   none

   START AND STOP PSD
       Psd ships with a systemd user service to start or stop it (psd.service).  Additionally,  a
       provided  resync-timer  will run an hourly resync from tmpfs back to the disk. The resync-
       timer is started automatically with psd.service so there is no need to  start  the  timer;
       only start psd.service.

        $ systemctl --user [option] psd.service

       Available options: start stop enable disable

   CLEAN MODE
       The  clean mode will delete ALL recovery snapshots that have accumulated. Only run it when
       sure these are no longer needed.

        $ psd c

        Profile-sync-daemon v6.39

        Deleting 2 crashrecovery dirs for profile /home/facade/.config/chromium
         /home/facade/.config/chromium-backup-crashrecovery-20200423_171359
         /home/facade/.config/chromium-backup-crashrecovery-20200424_112204

SUPPORTED BROWSERS

       •  Chromium (stable, beta, and dev)

       •  Conkeror

       •  Epiphany

       •  Falkon

       •  Firefox (stable, beta, and aurora)

       •  Firefox-trunk (this is an Ubuntu-only browser:  http://www.webupd8.org/2011/05/install-
          firefox-nightly-from-ubuntu-ppa.html)

       •  Google Chrome (stable, beta, and dev)

       •  Heftig's           version           of           Aurora          (Arch          Linux:
          https://bbs.archlinux.org/viewtopic.php?id=117157)

       •  Icecat

       •  Iceweasel

       •  Inox (https://bbs.archlinux.org/viewtopic.php?id=198763)

       •  Luakit

       •  Midori

       •  Opera (legacy, stable, next, and developer)

       •  Otter-browser

       •  Palemoon

       •  QupZilla

       •  Qutebrowser

       •  Rekonq

       •  Seamonkey

       •  Vivaldi

       •  Vivaldi-snapshot

       Psd's infrastructure can work in principal with any browser that uses a generic chrome  or
       mozilla,  etc.  format. User supplied profiles are provided in /usr/share/psd/contrib/ and
       can be manually copied to /usr/share/psd/browsers/ if one wishes to sync  that  particular
       browser.  Make a corresponding entry in the BROWSERS array within the config file. Support
       for these is unsupported.

NOTE ON SYMLINKED PROFILES

       Currently, psd does not support symlinked profiles and will  refuse  to  sync  if  one  is
       detected. For example, your firefox profile is ~/.mozilla/firefox/f8cv8bfu.default but you
       have moved that directory to /foo/bar/f8cv8bfu.default and replaced it with symlink:

        $ ls -l ~/.mozilla/firefox
        lrwxrwxrwx 1 facade users  26 Oct  1 17:02 f8cv8bfu.default -> /foo/bar/f8cv8bfu.default

       Running psd in preview mode will end in an error informing you of this:

        $ psd p

        Warning!
        /home/facade/.mozilla/firefox/f8cv8bfu.default appears to be a symlink but these are not supported.
        Please make the browser profile a live directory and try again. Exiting.

       A proper work  around  for  firefox  is  to  simply  edit  ~/.mozilla/firefox/profiles.ini
       defining the canonical path there. One also needs to adjust the IsRelative flag like so:

        [Profile0]
        Name=default
        IsRelative=0
        Path=/foo/bar/f8cv8bfu.default

       Other  solutions  may  exist  for  other  browsers but documenting them all here is out of
       scope.

SUPPORTED DISTROS

       Since psd is just a bash script with a systemd service, it should run  on  any  flavor  of
       Linux  running  systemd.  Several  distros  provide an official package or user-maintained
       option to install psd. One can also build psd from source. See the  official  website  for
       available packages, dependencies, and installation instructions

FAQ

       Q1: What is overlayfs mode?

       A1:  Overlayfs  is a simple union filesystem mainlined in the Linux kernel version 3.18.0.
       When used with psd, a reduced memory footprint and faster sync operations can be realized.
       The  magic  is  in how the overlay mount only writes out data that has changed rather than
       the entire profile. The same recovery features psd uses  in  its  default  mode  are  also
       active when running in overlayfs mode.

       See  the example in the PREVIEW MODE section above which shows a system using overlayfs to
       illustrate the typical memory savings. Note the "overlayfs size" report  compared  to  the
       total  "profile  size"  report  for  each profile. Be aware that these numbers will change
       depending on just how much new data is written to the profile, but in  common  use  cases,
       the overlayfs size will always be less than the profile size.

       Q2: How do I enable overlayfs mode?

       A2:  First,  be  sure  psd  is  not  active or else any changes to the config file will be
       ignored until it is restarted. Overlayfs mode is enabled with the USE_OVERLAYFS=  variable
       which  should  be  set  to  "yes"  in  the  config file. Psd will automatically detect the
       overlayfs version available to the kernel if it is configured to use one of  them.  It  is
       recommended  to  run  psd  in  preview  mode  to  verify  that  the system can in fact use
       overlayfs.

       Users wanting to use overlayfs mode MUST have  sudo  rights  without  password  prompt  to
       /usr/bin/psd-overlay-helper  or  global  sudo  rights without password prompt. If the user
       does not have global rights, add the following line to /etc/sudoers after any other  lines
       defining sudo access. It is recommended to use /usr/bin/visudo as root to set this up:

        foo ALL=(ALL) NOPASSWD: /usr/bin/psd-overlay-helper

       Q3:  Why  do  I  have  another  browser  profile  directory  "foo-back-ovfs" when I enable
       overlayfs?

       A3: The way overlayfs works is to mount a read-only base copy (so-called lower dir) of the
       profile,  and manage the new data on top of that. In order to avoid resyncing to the read-
       only filesystem, a copy is used instead. So using overlayfs is a trade-off: faster initial
       sync times and less memory usage vs. disk space in the home dir.

       Q4:  I  need  more  memory to accommodate my profile/profiles in /run/user/xxxx. How can I
       allocate more?

       A4: The standard way of controlling the size of  /run/user/  is  the  RuntimeDirectorySize
       directive  in  logind.conf (see the man page for logind.conf for more). By default, 10% of
       physical memory is used but one can increase it safely. Remember that tmpfs only  consumes
       what is actually used; the number specified here is just a maximum allowed.

       Q5: My system crashed for some reason and psd didn't sync back. What do I do?

       A5:  The "last good" backup of the browser profile/profiles should be the filesystem. Upon
       restarting psd (on a reboot for example), a check is performed to see if  the  symlink  to
       the  tmpfs  copy  of the profile is invalid. If it is invalid, psd will snapshot the "last
       good" backup before it rotates it back into place. This is more for a  sanity  check  that
       psd did no harm and that any data loss was a function of something else.

       Q6: Where can I find this snapshot?

       A6:  It  depends on the browser. The snapshot will be located in the same directory as the
       browser profile and it will contain a date-time-stamp that  corresponds  to  the  time  at
       which   the   recovery   took   place.   For   example,   a   chromium  snapshot  will  be
       ~/.config/chromium-backup-crashrecovery-20130912_153310 -- of course, the date_time suffix
       will be different.

       Q7: How can I restore the snapshot?

       A7: Follow these steps:

              1.  Stop psd.

              2.  Move the "bad" copy of the profile to a backup (don't blindly delete anything).

              3.  Copy the snapshot directory to the name that browser expects.

              Example using chromium:

              1.  systemctl --user stop psd.service

              2.  mv ~/.config/chromium ~/.config/chromium-bad

              3.  cp          -a          ~/.config/chromium-backup-crashrecovery-20130912_153310
                  ~/.config/chromium

       At this point, launch chromium which will use the backup snapshot just copied into  place.
       If all is well, it is safe to delete ~/.config/chromium-bad and the snapshot. Remember, to
       start psd, no browsers must be open (or psd will refuse to start).

       Q8: Can psd delete the snapshots automatically?

       A8: Yes, run psd with the "clean" switch to delete snapshots.

CONTRIBUTE

       Users wishing to contribute to this project, should fork  it  and  send  a  pull  request.
       Source is freely available on github.

BUGS

       Discovered a bug? Please open an issue.

              •  Several  cases  of  data  loss  have  been reported when using eCryptFS and psd,
                 therefore until this issue is flushed out, users of eCryptFS are encouraged  not
                 to  use  psd  unless  willing to help troubleshoot suspected browser corruption.
                 See: https://github.com/graysky2/profile-sync-daemon/issues/158

ONLINE

       •  Project page: https://github.com/graysky2/profile-sync-daemon

       •  Wiki page: https://wiki.archlinux.org/index.php/Profile-sync-daemon

AUTHOR

       graysky (graysky AT archlinux DOT us)

                                         02 October 2023                   profile-sync-daemon(1)