From hunguponcontent at gmail.com Sat Oct 2 18:51:40 2021 From: hunguponcontent at gmail.com (Default User) Date: Sat, 2 Oct 2021 18:51:40 -0400 Subject: [Borgbackup] default list of exclusions In-Reply-To: <20210926185348.24f86fc6@msi.defcon1.lan> References: <20210926185348.24f86fc6@msi.defcon1.lan> Message-ID: On Sun, Sep 26, 2021 at 12:54 PM Bzzzz wrote: > > On Sun, 26 Sep 2021 12:34:35 -0400 > Default User wrote: > > > Hello! > > Hi, > > > I want to try using borgbackup to do backups of my (only) user > > directory: /home/debian-user > > > > I just want to do so using Vorta, a GUI for borgbackup. > > > > But I just need a good, general list of directory and file type > > exclusions that I can just cut and paste into the Exclude Patterns > > window in Vorta. Something like the that > > appears by default in the Backintime backup program, or a similar one > > that is used by default in deja-dup. > > I use simple rules, but some needs to be doubled (to avoid matching > hidden files or dirs), backup is made like this : > > borg create \ > --verbose \ > --exclude-caches \ > --show-rc \ > --warning \ > --filter AME \ > --list \ > --stats \ > --checkpoint-interval 600 \ > --comment " ${1}" \ > --chunker-params 16,23,16,4095 \ > --compression auto,zlib,6 \ > --exclude-from /usr/local/sbin/BORG_EXCLUSIONS.list \ > ::$ARCH / > > and here's a sample of /usr/local/sbin/BORG_EXCLUSIONS.list : > > /lost+found/* > /lost+found/.?* > /BORG/* > /BORG/.?* > /dev/* > /dev/.?* > /home/*/.gvfs/* > /home/*/.gvfs/.?* > /root/.gvfs/* > /root/.gvfs/.?* > /home/*/.cache/chromium/* > /home/*/.cache/mozilla/firefox/* > /home/*/.claws-mail/tmp/* > /home/*/.googleearth/Cache/* > /home/*/Videos/* > /home/*/Videos/.?* > [?] > > Even if you just have one user, this may change in the future, so using > the * wildcard is a good way to fire and forget about that. > > > Note 2: I am not intending to use borgbackup to back up the whole > > system; just /home/debian-user and its subdirectories. I am using > > timeshift to back up the rest of the system. > > It doesn't take much time, except for the first backup of course and the > advantage of backing up the whole system in one palce is to be able to > recover from a full failure (like rm -r * from the system root or a disk > failure). > > I've tested it with the systemrescue live CD that includes borgbackup in > it's programs, works like a charm and quite fast - so, think twice > before dismissing this possibility. > > Jean-Yves > _______________________________________________ > Borgbackup mailing list > Borgbackup at python.org > https://mail.python.org/mailman/listinfo/borgbackup ---------------------------------------- Hi, Bzzzz. Just an update. Here is what I came up with, cobbled together, from a number of sources: *~ *.backup* **/.cache /boot/* /BORG/* /BORG/.?* /dev /dev/* /dev/.?* /etc/mtab /home/*/.cache/ # /home/*/.cache/chromium/* /home/*/.cache/mozilla/* /home/*/.cache/mozilla/firefox/* # /home/*/.claws-mail/tmp/* /home/*/.gvfs /home/*/.gvfs/* /home/*/.gvfs/.?* # /home/*/.googleearth/Cache/* /home/*/.opt/ /home/*/.thumbnails/* /lost+found /lost+found/* /lost+found/.?* /media /media/* /mnt /mnt/* /proc /proc/* /root/.gvfs/* /root/.gvfs/.?* /run /run/* /sys /sys/* /tmp /tmp/* /usr/tmp/* /var/backups/* /var/cache/* /var/cache/apt/archives/*.deb /var/lib/dhcpcd/* /var/tmp/* ~/.adobe/Flash_Player/AssetCache ~/.cache ~/.ccache ~/.gvfs # ~/.local/share/Steam ~/.Private ~/.recent-applications.xbel ~/.recently-used.xbel # ~/snap/*/*/.cache # ~/.steam/root ~/.thumbnails ~/.var/app/*/cache ~/.xsession-errors .cache .cache/* # .dropbox* .gvfs lost+found/* .Private .thumbnails* This is saved as a text file, which can be altered as needed at any time, and is copied and pasted into the Exclude Patterns window under the Sources tab of Vorta. I want to use Vorta, at least for now, because it is much more user-friendly than raw borgbackup. Note that some of the entries are commented out, as they are not needed currently, but are there to be uncommented as needed. Also, there are probably more entries than are really necessary. I hope to improve the exclude list over time. Also note that there are directory entries that probably do not apply to my immediate use case (backing up user stuff, from /home/debian-user on down). For example: /dev /dev/* /dev/.?* /media /media/* /mnt /mnt/* /proc /proc/* /run /run/* /sys /sys/* /tmp /tmp/* /usr/tmp/* And some things I just don't know if I need to back them up or not. Examples: /BORG/* /BORG/.?* /etc/mtab /home/*/.opt/ /lost+found /lost+found/* /lost+found/.?* lost+found/* .Private ~/.xsession-errors Further, the Archlinux wiki rsync article states: "If GVFS is installed [it is!], /home/*/.gvfs must be excluded to prevent rsync errors." Thus, these are on the exclude list: /home/*/.gvfs /home/*/.gvfs/* /home/*/.gvfs/.?* /root/.gvfs/* /root/.gvfs/.?* ~/.gvfs .gvfs And . . . I make a special point of excluding: /media /media/* /mnt /mnt/* Why? Because long ago, when I was just learning to use rsync, I tried to use it to do a full-system backup. Since nobody told me that /mnt and /media had to be specifically excluded, rsync did exactly what it was told to do, recursively backing up everything, filling up an entire 1Tb hard drive, stopping only when it ran out of room! I do not ever want that to happen again. Fun fact: I can use the same exclude list to mirror the same user stuff to a different backup directory, with obsessive frequency, using rsync: sudo rsync -avHx --delete --stats --exclude-from "/home/debian-user/rsync_exclude_list.txt" /home /media/debian-user/backup_drive/backups_of_host_home_directory_only Finally, You suggested doing full system backups using borgbackup. Thanks for the suggestion. I may try that in the future, as I learn more about borg. It is complicated, or at least complex! But for now I feel secure knowing that I can restore my system (non-data stuff) at any time, using Timeshift. And 1+ here also for SystemRescue. Well, I don't know if any of this was helpful or even interesting. But here it is, FWIW. Thanks for the reply! From tschoening at am-soft.de Sun Oct 3 05:59:52 2021 From: tschoening at am-soft.de (=?utf-8?Q?Thorsten_Sch=C3=B6ning?=) Date: Sun, 3 Oct 2021 11:59:52 +0200 Subject: [Borgbackup] default list of exclusions In-Reply-To: References: <20210926185348.24f86fc6@msi.defcon1.lan> Message-ID: <1393793119.20211003115952@am-soft.de> Guten Tag Default User, am Sonntag, 3. Oktober 2021 um 00:51 schrieben Sie: > This is saved as a text file, which can be altered as needed at any > time, and is copied and pasted into the Exclude Patterns window under > the Sources tab of Vorta. I want to use Vorta, at least for now, > because it is much more user-friendly than raw borgbackup. If plain BorgBackup is too difficult for you (currently), you might want to have a look at BorgMatic. This is a frontend to Borg like Vorta, but for the shell, using YAML config files and stuff, so preventing the need to copy exclude lists somewhere. Instead, you can simply put all aspects of your backup into version control like GIT or SVN. When I started using BorgBackup for a new server, I found both making the setup much easier to maintain. https://torsion.org/borgmatic/ Mit freundlichen Gr??en Thorsten Sch?ning -- AM-SoFT IT-Service - Bitstore Hameln GmbH Mitglied der Bitstore Gruppe - Ihr Full-Service-Dienstleister f?r IT und TK E-Mail: Thorsten.Schoening at AM-SoFT.de Web: http://www.AM-SoFT.de/ Tel: 05151- 9468- 0 Tel: 05151- 9468-55 Fax: 05151- 9468-88 Mobil: 0178-8 9468-04 AM-SoFT IT-Service - Bitstore Hameln GmbH, Brandenburger Str. 7c, 31789 Hameln AG Hannover HRB 221853 - Gesch?ftsf?hrer: Janine Galonska From hunguponcontent at gmail.com Sun Oct 3 10:39:23 2021 From: hunguponcontent at gmail.com (Default User) Date: Sun, 3 Oct 2021 10:39:23 -0400 Subject: [Borgbackup] default list of exclusions In-Reply-To: <1393793119.20211003115952@am-soft.de> References: <20210926185348.24f86fc6@msi.defcon1.lan> <1393793119.20211003115952@am-soft.de> Message-ID: On Sun, Oct 3, 2021 at 6:08 AM Thorsten Sch?ning wrote: > > Guten Tag Default User, > am Sonntag, 3. Oktober 2021 um 00:51 schrieben Sie: > > > This is saved as a text file, which can be altered as needed at any > > time, and is copied and pasted into the Exclude Patterns window under > > the Sources tab of Vorta. I want to use Vorta, at least for now, > > because it is much more user-friendly than raw borgbackup. > > If plain BorgBackup is too difficult for you (currently), you might > want to have a look at BorgMatic. This is a frontend to Borg like > Vorta, but for the shell, using YAML config files and stuff, so > preventing the need to copy exclude lists somewhere. Instead, you can > simply put all aspects of your backup into version control like GIT or > SVN. When I started using BorgBackup for a new server, I found both > making the setup much easier to maintain. > > https://torsion.org/borgmatic/ > > Mit freundlichen Gr??en > > Thorsten Sch?ning > > -- > AM-SoFT IT-Service - Bitstore Hameln GmbH > Mitglied der Bitstore Gruppe - Ihr Full-Service-Dienstleister f?r IT und TK > > E-Mail: Thorsten.Schoening at AM-SoFT.de > Web: http://www.AM-SoFT.de/ > > Tel: 05151- 9468- 0 > Tel: 05151- 9468-55 > Fax: 05151- 9468-88 > Mobil: 0178-8 9468-04 > > AM-SoFT IT-Service - Bitstore Hameln GmbH, Brandenburger Str. 7c, 31789 Hameln > AG Hannover HRB 221853 - Gesch?ftsf?hrer: Janine Galonska > > > > > _______________________________________________ > Borgbackup mailing list > Borgbackup at python.org > https://mail.python.org/mailman/listinfo/borgbackup Hi Thorsten, thanks for the pointer to BorgMatic! I'll check it out. From tschoening at am-soft.de Fri Oct 8 03:25:23 2021 From: tschoening at am-soft.de (=?utf-8?Q?Thorsten_Sch=C3=B6ning?=) Date: Fri, 8 Oct 2021 09:25:23 +0200 Subject: [Borgbackup] Is backup to multiple different USB-HDDs all containing the SAME repo supported? Message-ID: <1905060256.20211008092523@am-soft.de> Hi everyone, I have some customers using Synology NAS, which currently get backed up simply by some custom script and RSYNCing all files of interest from internal storage to attached USB-HDDs. The important thing to note is that all of those HDDs are changed, most likely daily, but some as well monthly only, because those are kept off-site for one month. Witht he custom script and RSYNC this works easily, because neither of both maintains any state. The disks simply become mounted automatically in always the same folder, RSYNC gets executed does what it needs to do and the disk gets unmounted again. Though, the current approach has some disadvantages as well: Synology only supports EXT4 and alike file systems in that setup, so there's no compression or snapshots. Efficiently maintaining a history of backups without actually copying unchanged files is not that easy as well, there's no automatic cleanup or retention policy to prevent filling thr disk etc. Instead, Synology provides and AddOn named Hyper Backup, which pretty much works like BorgBackup: Compression, de-duplication, encryption, automatic schedule, integrity checks and a retention policy. https://www.synology.com/en-global/dsm/feature/hyper_backup Though, there's one major downside again: That app seems to maintain some state strongly binding one concrete backup configuration to the backup target medium. That means that e.g. creating one backup task only, like is the case with my RSYNC-approach, and then changing USB-HDDs each day DOES NOT work. > Multi-version backup tasks do not support the back up of data to > more than one destination. https://kb.synology.com/en-global/DSM/tutorial/How_do_I_back_up_data_to_multiple_USB_with_Hyper_Backup Because I'm using BorgBackup on some server already, I thought about implementing that instead of Hyper Backup. But of course that only makes sense if BorgBackup is more tolerant about changed repo state. The approach would be to create ONE repo with the same attributes like repo path, encryption key etc. per USB-disk and then hopefully only execute "borg create [...]" daily without the need to care about which USB-disk is currently mounted. Is that possible or does BorgBackup maintain some repo-specific state as well, making such a setup fail? I see some repo-IDs and automatically generated paths to keys files, which might not map properly anymore in my proposed setup. Thanks! Mit freundlichen Gr??en Thorsten Sch?ning -- AM-SoFT IT-Service - Bitstore Hameln GmbH Mitglied der Bitstore Gruppe - Ihr Full-Service-Dienstleister f?r IT und TK E-Mail: Thorsten.Schoening at AM-SoFT.de Web: http://www.AM-SoFT.de/ Tel: 05151- 9468- 0 Tel: 05151- 9468-55 Fax: 05151- 9468-88 Mobil: 0178-8 9468-04 AM-SoFT IT-Service - Bitstore Hameln GmbH, Brandenburger Str. 7c, 31789 Hameln AG Hannover HRB 221853 - Gesch?ftsf?hrer: Janine Galonska From tw at waldmann-edv.de Fri Oct 8 03:44:42 2021 From: tw at waldmann-edv.de (Thomas Waldmann) Date: Fri, 8 Oct 2021 09:44:42 +0200 Subject: [Borgbackup] Is backup to multiple different USB-HDDs all containing the SAME repo supported? In-Reply-To: <1905060256.20211008092523@am-soft.de> References: <1905060256.20211008092523@am-soft.de> Message-ID: borg identifies a repo by its id (see repo config file), so it is not a problem to have different repos and mount them to the same directory (like rotating usb disks daily/monthly). From tschoening at am-soft.de Fri Oct 8 05:17:02 2021 From: tschoening at am-soft.de (=?windows-1250?Q?Thorsten_Sch=F6ning?=) Date: Fri, 8 Oct 2021 11:17:02 +0200 Subject: [Borgbackup] Is backup to multiple different USB-HDDs all containing the SAME repo supported? In-Reply-To: References: <1905060256.20211008092523@am-soft.de> Message-ID: <693637782.20211008111702@am-soft.de> Guten Tag Thomas Waldmann, am Freitag, 8. Oktober 2021 um 09:44 schrieben Sie: > borg identifies a repo by its id (see repo config file), so it is > not a problem to have different repos and mount them to the same > directory (like rotating usb disks daily/monthly). And what about the keys when creating multiple repos using the same mount point with encryption mode "keyfile"? Looking at borgs config directory, those are stored in files using some automatically generated name based on the path of the repo. That would be the same with all created repos on different disks. Would those keys simply be reused or overwritten or ...? Am I forced to provide the same password always to make things work? What happens in case of different passwords for different repos, but all of them using "keyfile"? Mit freundlichen Gr??en Thorsten Sch?ning -- AM-SoFT IT-Service - Bitstore Hameln GmbH Mitglied der Bitstore Gruppe - Ihr Full-Service-Dienstleister f?r IT und TK E-Mail: Thorsten.Schoening at AM-SoFT.de Web: http://www.AM-SoFT.de/ Tel: 05151- 9468- 0 Tel: 05151- 9468-55 Fax: 05151- 9468-88 Mobil: 0178-8 9468-04 AM-SoFT IT-Service - Bitstore Hameln GmbH, Brandenburger Str. 7c, 31789 Hameln AG Hannover HRB 221853 - Gesch?ftsf?hrer: Janine Galonska From tw at waldmann-edv.de Fri Oct 8 06:14:18 2021 From: tw at waldmann-edv.de (Thomas Waldmann) Date: Fri, 8 Oct 2021 12:14:18 +0200 Subject: [Borgbackup] Is backup to multiple different USB-HDDs all containing the SAME repo supported? In-Reply-To: <693637782.20211008111702@am-soft.de> References: <1905060256.20211008092523@am-soft.de> <693637782.20211008111702@am-soft.de> Message-ID: <7182482e-243d-635c-d4f8-c13ca5e51ddb@waldmann-edv.de> > And what about the keys when creating multiple repos using the same > mount point with encryption mode "keyfile"? iirc, that should also just work. it's a bit easier to handle (for you and for borg) if you use repokey, but iirc it should also work for keyfile mode, just try it. > Am I forced to provide the same password always to make things work? That is not a requirement, but makes your script definitely simpler. Otherwise your script would have to determine what passphrase to give to borg depending on the disk that is connected (the repo you are accessing). From pd1acf at gmail.com Wed Oct 13 13:30:59 2021 From: pd1acf at gmail.com (Ronald) Date: Wed, 13 Oct 2021 19:30:59 +0200 Subject: [Borgbackup] Change the quota on remote repo Message-ID: <90AFEDB0-7A6B-4038-A449-07D862ED8DD8@gmail.com> Hi All, I am new to Borg, and after playing with it for some weeks, I am trying to change the value of the --storage-quota on a remote server via ?borg xxx? commands ( I have not tried yet to manually edit the remote config file ). From the docs, it looks like I should utilize the ?serve? command, but I cannot seem to find the correct syntax. Is there any example for this specific task? My normal command would be: borg list --remote-path=borg1 ssh://ussrname at bla.storageserver.com/./backups Many thanks, Ron -------------- next part -------------- An HTML attachment was scrubbed... URL: From dassies at eml.cc Thu Oct 14 11:07:48 2021 From: dassies at eml.cc (Nils Blomqvist) Date: Thu, 14 Oct 2021 17:07:48 +0200 Subject: [Borgbackup] "Attempting to access a previously unknown unencrypted repository!" Message-ID: Is it possible to bypass this warning? From bjo at schafweide.org Sat Oct 16 19:06:57 2021 From: bjo at schafweide.org (Bjoern Franke) Date: Sun, 17 Oct 2021 01:06:57 +0200 Subject: [Borgbackup] Fatal Python error: Illegal instruction Message-ID: Hi, borgmatic 1.5.20 running borg 1.1.17 on Alpine Edge crashes: /etc/borgmatic.d/borgbase.yaml: Running command for pre-backup hook echo "`date` - Starting a backup job." Sun Oct 17 00:16:44 CEST 2021 - Starting a backup job. /etc/borgmatic.d/borgbase.yaml: No commands to run for pre-check hook abc123 at abc123.repo.borgbase.com:repo: Pruning archives borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 0 --keep-yearly 0 --prefix {hostname}- --umask 77 --stats --debug --show-rc abc123 at abc123.repo.borgbase.com:repo using builtin fallback logging configuration 35 self tests completed in 0.49 seconds SSH command line: ['ssh', 'abc123 at abc123.repo.borgbase.com', 'borg', 'serve', '--umask=077', '--debug'] Remote: using builtin fallback logging configuration Remote: 35 self tests completed in 0.06 seconds Remote: using builtin fallback logging configuration Remote: Initialized logging system for JSON-based protocol Remote: Resolving repository path b'repo' Remote: Resolved repository path to '/srv/repos/abc123/repo' Remote: Verified integrity of /srv/repos/abc123/repo/index.957 TAM-verified manifest Killed stale lock sub.domain.net at 217839556165686.7012-0. Removed stale exclusive roster lock for host sub.domain.net at 217839556165686 pid 7012 thread 0. Removed stale exclusive roster lock for host sub.domain.net at 217839556165686 pid 7012 thread 0. security: read previous location 'ssh://abc123 at abc123.repo.borgbase.com/./repo' security: read manifest timestamp '2021-10-15T22:00:04.204946' security: determined newest manifest timestamp as 2021-10-15T22:00:04.204946 security: repository checks ok, allowing access Verified integrity of /root/.cache/borg/5d2687edc800ec4530d00492da840563494ebab21ff665bbfb195c09d489d088/chunks security: read previous location 'ssh://abc123 at abc123.repo.borgbase.com/./repo' security: read manifest timestamp '2021-10-15T22:00:04.204946' security: determined newest manifest timestamp as 2021-10-15T22:00:04.204946 security: repository checks ok, allowing access ------------------------------------------------------------------------------ Original size Compressed size Deduplicated size Deleted data: 0 B 0 B 0 B All archives: 16.28 MB 4.76 MB 762.07 kB Unique chunks Total chunks Chunk index: 407 3872 ------------------------------------------------------------------------------ RemoteRepository: 213 B bytes sent, 3.22 kB bytes received, 5 messages sent terminating with success status, rc 0 abc123 at abc123.repo.borgbase.com:repo: Creating archive borg create --exclude-from /tmp/tmpbxadh_kj --exclude-caches --exclude-if-present .nobackup --compression auto,zstd --one-file-system --files-cache ctime,size,inode --umask 77 --stats --debug --show-rc --progress abc123 at abc123.repo.borgbase.com:repo::{hostname}-{now:%Y-%m-%dT%H:%M:%S.%f} /etc /home /usr/local/bin > using builtin fallback logging configuration 35 self tests completed in 0.46 seconds SSH command line: ['ssh', 'abc123 at abc123.repo.borgbase.com', 'borg', 'serve', '--umask=077', '--debug'] Remote: using builtin fallback logging configuration Remote: 35 self tests completed in 0.06 seconds Remote: using builtin fallback logging configuration Remote: Initialized logging system for JSON-based protocol Remote: Resolving repository path b'repo' Remote: Resolved repository path to '/srv/repos/abc123/repo' Remote: Verified integrity of /srv/repos/abc123/repo/index.957 TAM-verified manifest security: read previous location 'ssh://abc123 at abc123.repo.borgbase.com/./repo' security: read manifest timestamp '2021-10-15T22:00:04.204946' security: determined newest manifest timestamp as 2021-10-15T22:00:04.204946 security: repository checks ok, allowing access Creating archive at "abc123 at abc123.repo.borgbase.com:repo::{hostname}-{now:%Y-%m-%dT%H:%M:%S.%f}" Verified integrity of /root/.cache/borg/5d2687edc800ec4530d00492da840563494ebab21ff665bbfb195c09d489d088/chunks Reading files cache ... Verified integrity of /root/.cache/borg/5d2687edc800ec4530d00492da840563494ebab21ff665bbfb195c09d489d088/files security: read previous location 'ssh://abc123 at abc123.repo.borgbase.com/./repo' security: read manifest timestamp '2021-10-15T22:00:04.204946' security: determined newest manifest timestamp as 2021-10-15T22:00:04.204946 security: repository checks ok, allowing access Processing files ... Fatal Python error: Illegal instruction Current thread 0x00007ff5c7e27b48 (most recent call first): File "/usr/lib/python3.9/site-packages/borg/xattr.py", line 219 in func File "/usr/lib/python3.9/site-packages/borg/xattr.py", line 160 in _listxattr_inner File "/usr/lib/python3.9/site-packages/borg/xattr.py", line 221 in listxattr File "/usr/lib/python3.9/site-packages/borg/xattr.py", line 50 in get_all File "/usr/lib/python3.9/site-packages/borg/archive.py", line 916 in stat_ext_attrs File "/usr/lib/python3.9/site-packages/borg/archive.py", line 928 in stat_attrs File "/usr/lib/python3.9/site-packages/borg/archive.py", line 953 in process_dir File "/usr/lib/python3.9/site-packages/borg/archiver.py", line 668 in _process File "/usr/lib/python3.9/site-packages/borg/archiver.py", line 556 in create_inner File "/usr/lib/python3.9/site-packages/borg/archiver.py", line 598 in do_create File "/usr/lib/python3.9/site-packages/borg/archiver.py", line 177 in wrapper File "/usr/lib/python3.9/site-packages/borg/archiver.py", line 4635 in run File "/usr/lib/python3.9/site-packages/borg/archiver.py", line 4703 in main File "/usr/bin/borg", line 33 in abc123 at abc123.repo.borgbase.com:repo: Error running actions for repository Command 'borg create --exclude-from /tmp/tmpbxadh_kj --exclude-caches --exclude-if-present .nobackup --compression auto,zstd --one-file-system --files-cache ctime,size,inode --umask 77 --stats --debug --show-rc --progress abc123 at abc123.repo.borgbase.com:repo::{hostname}-{now:%Y-%m-%dT%H:%M:%S.%f} /etc /home /usr/local/bin' died with . /etc/borgmatic.d/borgbase.yaml: Running command for on-error hook echo "`date` - Error while creating a backup." Sun Oct 17 00:16:48 CEST 2021 - Error while creating a backup. /etc/borgmatic.d/borgbase.yaml: Error running configuration file Any ideas what is happening? From ndbecker2 at gmail.com Sat Oct 16 21:47:06 2021 From: ndbecker2 at gmail.com (Neal Becker) Date: Sat, 16 Oct 2021 21:47:06 -0400 Subject: [Borgbackup] Fatal Python error: Illegal instruction In-Reply-To: References: Message-ID: Didn't read the whole report, but the only way to get illegal instruction is running code not compiled for your CPU. On Sat, Oct 16, 2021, 7:14 PM Bjoern Franke via Borgbackup < borgbackup at python.org> wrote: > Hi, > > borgmatic 1.5.20 running borg 1.1.17 on Alpine Edge crashes: > > /etc/borgmatic.d/borgbase.yaml: Running command for pre-backup hook > echo "`date` - Starting a backup job." > Sun Oct 17 00:16:44 CEST 2021 - Starting a backup job. > /etc/borgmatic.d/borgbase.yaml: No commands to run for pre-check hook > abc123 at abc123.repo.borgbase.com:repo: Pruning archives > borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 0 --keep-yearly > 0 --prefix {hostname}- --umask 77 --stats --debug --show-rc > abc123 at abc123.repo.borgbase.com:repo > using builtin fallback logging configuration > 35 self tests completed in 0.49 seconds > SSH command line: ['ssh', 'abc123 at abc123.repo.borgbase.com', 'borg', > 'serve', '--umask=077', '--debug'] > Remote: using builtin fallback logging configuration > Remote: 35 self tests completed in 0.06 seconds > Remote: using builtin fallback logging configuration > Remote: Initialized logging system for JSON-based protocol > Remote: Resolving repository path b'repo' > Remote: Resolved repository path to '/srv/repos/abc123/repo' > Remote: Verified integrity of /srv/repos/abc123/repo/index.957 > TAM-verified manifest > Killed stale lock sub.domain.net at 217839556165686.7012-0. > Removed stale exclusive roster lock for host > sub.domain.net at 217839556165686 pid 7012 thread 0. > Removed stale exclusive roster lock for host > sub.domain.net at 217839556165686 pid 7012 thread 0. > security: read previous location > 'ssh://abc123 at abc123.repo.borgbase.com/./repo' > security: read manifest timestamp '2021-10-15T22:00:04.204946' > security: determined newest manifest timestamp as > 2021-10-15T22:00:04.204946 > security: repository checks ok, allowing access > Verified integrity of > > /root/.cache/borg/5d2687edc800ec4530d00492da840563494ebab21ff665bbfb195c09d489d088/chunks > security: read previous location > 'ssh://abc123 at abc123.repo.borgbase.com/./repo' > security: read manifest timestamp '2021-10-15T22:00:04.204946' > security: determined newest manifest timestamp as > 2021-10-15T22:00:04.204946 > security: repository checks ok, allowing access > > ------------------------------------------------------------------------------ > Original size Compressed size > Deduplicated size > Deleted data: 0 B 0 B > 0 B > All archives: 16.28 MB 4.76 MB > 762.07 kB > Unique chunks Total chunks > Chunk index: 407 3872 > > ------------------------------------------------------------------------------ > RemoteRepository: 213 B bytes sent, 3.22 kB bytes received, 5 messages sent > terminating with success status, rc 0 > abc123 at abc123.repo.borgbase.com:repo: Creating archive > borg create --exclude-from /tmp/tmpbxadh_kj --exclude-caches > --exclude-if-present .nobackup --compression auto,zstd --one-file-system > --files-cache ctime,size,inode --umask 77 --stats --debug --show-rc > --progress > abc123 at abc123.repo.borgbase.com:repo::{hostname}-{now:%Y-%m-%dT%H:%M:%S.%f} > > /etc /home /usr/local/bin > > using builtin fallback logging configuration > 35 self tests completed in 0.46 seconds > SSH command line: ['ssh', 'abc123 at abc123.repo.borgbase.com', 'borg', > 'serve', '--umask=077', '--debug'] > Remote: using builtin fallback logging configuration > Remote: 35 self tests completed in 0.06 seconds > Remote: using builtin fallback logging configuration > Remote: Initialized logging system for JSON-based protocol > Remote: Resolving repository path b'repo' > Remote: Resolved repository path to '/srv/repos/abc123/repo' > Remote: Verified integrity of /srv/repos/abc123/repo/index.957 > TAM-verified manifest > security: read previous location > 'ssh://abc123 at abc123.repo.borgbase.com/./repo' > security: read manifest timestamp '2021-10-15T22:00:04.204946' > security: determined newest manifest timestamp as > 2021-10-15T22:00:04.204946 > security: repository checks ok, allowing access > Creating archive at > "abc123 at abc123.repo.borgbase.com: > repo::{hostname}-{now:%Y-%m-%dT%H:%M:%S.%f}" > Verified integrity of > > /root/.cache/borg/5d2687edc800ec4530d00492da840563494ebab21ff665bbfb195c09d489d088/chunks > Reading files cache ... > Verified integrity of > > /root/.cache/borg/5d2687edc800ec4530d00492da840563494ebab21ff665bbfb195c09d489d088/files > security: read previous location > 'ssh://abc123 at abc123.repo.borgbase.com/./repo' > security: read manifest timestamp '2021-10-15T22:00:04.204946' > security: determined newest manifest timestamp as > 2021-10-15T22:00:04.204946 > security: repository checks ok, allowing access > Processing files ... > Fatal Python error: Illegal instruction > > Current thread 0x00007ff5c7e27b48 (most recent call first): > File "/usr/lib/python3.9/site-packages/borg/xattr.py", line 219 in func > File "/usr/lib/python3.9/site-packages/borg/xattr.py", line 160 in > _listxattr_inner > File "/usr/lib/python3.9/site-packages/borg/xattr.py", line 221 in > listxattr > File "/usr/lib/python3.9/site-packages/borg/xattr.py", line 50 in > get_all > File "/usr/lib/python3.9/site-packages/borg/archive.py", line 916 in > stat_ext_attrs > File "/usr/lib/python3.9/site-packages/borg/archive.py", line 928 in > stat_attrs > File "/usr/lib/python3.9/site-packages/borg/archive.py", line 953 in > process_dir > File "/usr/lib/python3.9/site-packages/borg/archiver.py", line 668 in > _process > File "/usr/lib/python3.9/site-packages/borg/archiver.py", line 556 in > create_inner > File "/usr/lib/python3.9/site-packages/borg/archiver.py", line 598 in > do_create > File "/usr/lib/python3.9/site-packages/borg/archiver.py", line 177 in > wrapper > File "/usr/lib/python3.9/site-packages/borg/archiver.py", line 4635 > in run > File "/usr/lib/python3.9/site-packages/borg/archiver.py", line 4703 > in main > File "/usr/bin/borg", line 33 in > abc123 at abc123.repo.borgbase.com:repo: Error running actions for repository > Command 'borg create --exclude-from /tmp/tmpbxadh_kj --exclude-caches > --exclude-if-present .nobackup --compression auto,zstd --one-file-system > --files-cache ctime,size,inode --umask 77 --stats --debug --show-rc > --progress > abc123 at abc123.repo.borgbase.com:repo::{hostname}-{now:%Y-%m-%dT%H:%M:%S.%f} > > /etc /home /usr/local/bin' died with . > /etc/borgmatic.d/borgbase.yaml: Running command for on-error hook > echo "`date` - Error while creating a backup." > Sun Oct 17 00:16:48 CEST 2021 - Error while creating a backup. > /etc/borgmatic.d/borgbase.yaml: Error running configuration file > > Any ideas what is happening? > > _______________________________________________ > Borgbackup mailing list > Borgbackup at python.org > https://mail.python.org/mailman/listinfo/borgbackup > -------------- next part -------------- An HTML attachment was scrubbed... URL: From lazyvirus at gmx.com Sun Oct 17 07:27:57 2021 From: lazyvirus at gmx.com (Bzzzz) Date: Sun, 17 Oct 2021 13:27:57 +0200 Subject: [Borgbackup] Fatal Python error: Illegal instruction In-Reply-To: References: Message-ID: <20211017132757.55bb5ac1@msi.defcon1.lan> On Sun, 17 Oct 2021 01:06:57 +0200 Bjoern Franke via Borgbackup wrote: > Fatal Python error: Illegal instruction As Neal said, there's an instruction in this program code your CPU can't understand or an optimization that your OS either doesn't understand. Remove it completely, check it is physically entirely gone (if not, remove it's directories recursively), check you have all dependencies installed and reinstall it with: pip3 install borgbackup. Jean-Yves From public at enkore.de Sun Oct 17 11:39:46 2021 From: public at enkore.de (d0) Date: Sun, 17 Oct 2021 15:39:46 +0000 Subject: [Borgbackup] Fatal Python error: Illegal instruction In-Reply-To: References: Message-ID: Is this happening on some kind of ARM board? -Marian From bjo at schafweide.org Sun Oct 17 11:52:30 2021 From: bjo at schafweide.org (Bjoern Franke) Date: Sun, 17 Oct 2021 17:52:30 +0200 (GMT+02:00) Subject: [Borgbackup] Fatal Python error: Illegal instruction In-Reply-To: References: Message-ID: <778a3d84-2c62-4f46-9546-e12c758c5375@schafweide.org> 17.10.2021 17:39:59 d0 : > Is this happening on some kind of ARM board? > > -Marian Hi, No, it's a KVM x86_64 box. This issue occured since some days and I have no clue what changed that the issue appears. Regards Bj?rn From tschoening at am-soft.de Sun Oct 17 14:59:51 2021 From: tschoening at am-soft.de (=?utf-8?Q?Thorsten_Sch=C3=B6ning?=) Date: Sun, 17 Oct 2021 20:59:51 +0200 Subject: [Borgbackup] Fatal Python error: Illegal instruction In-Reply-To: <778a3d84-2c62-4f46-9546-e12c758c5375@schafweide.org> References: <778a3d84-2c62-4f46-9546-e12c758c5375@schafweide.org> Message-ID: <532541223.20211017205951@am-soft.de> Guten Tag Bjoern Franke via Borgbackup, am Sonntag, 17. Oktober 2021 um 17:52 schrieben Sie: > No, it's a KVM x86_64 box. This issue occured since some days and I > have no clue what changed that the issue appears. Do you have some kind of automatic updates enabled? How often dou you restart? Any live patching enabled? Seems like Python calling into libc is the problem: > return libc.llistxattr(path, buf, size) https://github.com/borgbackup/borg/blob/1.1.17/src/borg/xattr.py#L219 Your problem is with handling some symlink: > llistxattr() is identical to listxattr(), except in the case of a > symbolic link, where the list of names of extended attributes > associated with the link itself is retrieved, not the file that > it refers to. https://man7.org/linux/man-pages/man2/listxattr.2.html So increase verbosity of BorgMatic to show all processed individual files and have a detailed look at hopefullx the last one mentioned before the stacktrace. Something around the following: > --log-file-verbosity 2 --files Mit freundlichen Gr??en Thorsten Sch?ning -- AM-SoFT IT-Service - Bitstore Hameln GmbH Mitglied der Bitstore Gruppe - Ihr Full-Service-Dienstleister f?r IT und TK E-Mail: Thorsten.Schoening at AM-SoFT.de Web: http://www.AM-SoFT.de/ Tel: 05151- 9468- 0 Tel: 05151- 9468-55 Fax: 05151- 9468-88 Mobil: 0178-8 9468-04 AM-SoFT IT-Service - Bitstore Hameln GmbH, Brandenburger Str. 7c, 31789 Hameln AG Hannover HRB 221853 - Gesch?ftsf?hrer: Janine Galonska From public at enkore.de Sun Oct 17 16:18:48 2021 From: public at enkore.de (d0) Date: Sun, 17 Oct 2021 20:18:48 +0000 Subject: [Borgbackup] Fatal Python error: Illegal instruction In-Reply-To: <778a3d84-2c62-4f46-9546-e12c758c5375@schafweide.org> References: <778a3d84-2c62-4f46-9546-e12c758c5375@schafweide.org> Message-ID: OK, then it's probably some x86 extension being disabled / forgotten in the VM's configuration. Try running under gdb and use the disassemble command to see which instruction caused the SIGILL. Probably AVX. -Marian From bjo at schafweide.org Sun Oct 17 18:30:11 2021 From: bjo at schafweide.org (Bjoern Franke) Date: Mon, 18 Oct 2021 00:30:11 +0200 Subject: [Borgbackup] Fatal Python error: Illegal instruction In-Reply-To: <532541223.20211017205951@am-soft.de> References: <778a3d84-2c62-4f46-9546-e12c758c5375@schafweide.org> <532541223.20211017205951@am-soft.de> Message-ID: <0e7781a4-6c9d-3868-2983-6aa409b72d95@schafweide.org> Hi, > > Do you have some kind of automatic updates enabled? How often dou you > restart? Any live patching enabled? Seems like Python calling into > libc is the problem: No autoupdates, but I updated and restarted some days ago. But the last musl update and a restart was also some weeks ago. >> return libc.llistxattr(path, buf, size) > > https://github.com/borgbackup/borg/blob/1.1.17/src/borg/xattr.py#L219 > > Your problem is with handling some symlink: > >> llistxattr() is identical to listxattr(), except in the case of a >> symbolic link, where the list of names of extended attributes >> associated with the link itself is retrieved, not the file that Thanks for the hint. > > So increase verbosity of BorgMatic to show all processed individual > files and have a detailed look at hopefullx the last one mentioned > before the stacktrace. Something around the following: > >> --log-file-verbosity 2 --files > The log output was already with -v2 etc, so it seems to crash even with the first file? I think I will file a bug report at alpine. Thanks for the help! Bj?rn From bjo at schafweide.org Mon Oct 18 03:43:12 2021 From: bjo at schafweide.org (Bjoern Franke) Date: Mon, 18 Oct 2021 09:43:12 +0200 Subject: [Borgbackup] Fatal Python error: Illegal instruction In-Reply-To: <0e7781a4-6c9d-3868-2983-6aa409b72d95@schafweide.org> References: <778a3d84-2c62-4f46-9546-e12c758c5375@schafweide.org> <532541223.20211017205951@am-soft.de> <0e7781a4-6c9d-3868-2983-6aa409b72d95@schafweide.org> Message-ID: <2ac6dc4b-2a68-4f59-df2a-cae7b953b071@schafweide.org> Hi, > > I think I will file a bug report at alpine. The issue was caused by libffi, the following change fixed the issue: https://git.alpinelinux.org/aports/commit/main/libffi?id=d87acd2e2c2ef847a47d318ee427a919e822d8e9 Regards Bj?rn From dassies at eml.cc Mon Oct 18 10:34:33 2021 From: dassies at eml.cc (Nils Blomqvist) Date: Mon, 18 Oct 2021 16:34:33 +0200 Subject: [Borgbackup] "Attempting to access a previously unknown unencrypted repository!" In-Reply-To: References: Message-ID: <1BDDE8CD-31C1-4FB6-A268-FCA48F3EE7DB@eml.cc> > Is it possible to bypass this warning? I solved this by using `export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes`. From joehesse at gmail.com Wed Nov 3 10:38:10 2021 From: joehesse at gmail.com (Joseph Hesse) Date: Wed, 3 Nov 2021 16:38:10 +0200 Subject: [Borgbackup] Problem with "borg mount" Message-ID: <2dc21806-724a-155e-410c-7797760f4245@gmail.com> Hello, I am using borg version 1.1.17 on Fedora 35(latest version).? I back up both to an external hard drive and a borg cloud server. I attempted to restore my home directory from my latest backup on the external hard drive using "borg mount".? The restore crashed with the error message "cp: cannot stat 'file' : transport endpoint is not connected".? I tried a second time with the same error. "borg check" did not find any errors with my repository. I tried to restore my home directory from my latest backup on the cloud server.? The fuse mount folder list my latest backup with the extension ".checkpoint". I would appreciate your advice on fixing my problem. Thank you, Joe From tw at waldmann-edv.de Wed Nov 3 13:49:34 2021 From: tw at waldmann-edv.de (Thomas Waldmann) Date: Wed, 3 Nov 2021 18:49:34 +0100 Subject: [Borgbackup] Problem with "borg mount" In-Reply-To: <2dc21806-724a-155e-410c-7797760f4245@gmail.com> References: <2dc21806-724a-155e-410c-7797760f4245@gmail.com> Message-ID: > I attempted to restore my home directory from my latest backup on the > external hard drive using "borg mount".? The restore crashed with the > error message "cp: cannot stat 'file' : transport endpoint is not > connected". That "transport endpoint is not connected" is a very generic error message, basically it means "it does not work". It is caused by the fuse related code crashing and thus stopping to work. To get a more useful error message / traceback, you need to use "borg mount -f" to run the borg mount process in the foreground, so you can see why it is crashing and then check the borg issue tracker whether the issue is known. If not, file an issue either there or here on the mailing list. > I tried to restore my home directory from my latest backup on the > cloud server.? The fuse mount folder list my latest backup with the > extension ".checkpoint". The archives with .checkpoint ending are valid archives, but incomplete. borg does a checkpoint every 30 minutes by default, but the final / completed archive does not have a .checkpoint ending. From joehesse at gmail.com Thu Nov 11 21:43:39 2021 From: joehesse at gmail.com (Joseph Hesse) Date: Fri, 12 Nov 2021 04:43:39 +0200 Subject: [Borgbackup] Problem with borg mount Message-ID: <4b2f059f-e1af-eb88-b5bc-4092f6e9ed73@gmail.com> I attempted to restore my home directory from my latest backup on an external hard drive using "borg mount".? The restore crashed with the error message "cp: cannot stat 'file' : transport endpoint is not connected".? I was informed by Thomas Waldmann that this is a problem with fuse related code crashing and is a generic error message not connected with borg.? He suggested that I run "borg mount -f" in the foreground to get a more useful error message. I ran borg mount with the foreground option and it again crashed. This time I attempted the restore from a borg server.? Here are the error messages.? Text with "***" at the beginning are my comments. ****************************************************************************************************************** *** This came after running the command - the folder is writable, I am the owner and group and it has permissions 700 and lives in /borg with root as the owner and group and has permissions 755. /borg/fusermountcloud: Mountpoint must be a writable directory Press any key for menu *** Next I tried this and got the following.? The folder /borg contains the mount point folder [root at JoePC2 borg]# ls -l ls: cannot access 'fusermountcloud': Permission denied total 8 d????????? ? ??? ?????? ???????????? ? fusermountcloud drwx------ 2 joe joe 4096 Nov? 7 06:39 fusermountdisk drwx------ 2 joe joe 4096 Nov? 7 06:39 repo [root at JoePC2 borg]# *** I tried to remove the /borg directory containing the mountpoint and it didn't work [root at JoePC2 /]# rm -r -f borg rm: cannot remove 'borg/fusermountcloud': Is a directory *** I rebooted my computer, the other two folders in /borg are missing [root at JoePC2 borg]# ls -l total 4 drwx------ 2 joe joe 4096 Nov? 7 06:39 fusermountcloud [root at JoePC2 borg]# ****************************************************************************************************************** Thank you for reading this.? Thank you in advance for any help you give me. Joe From tschoening at am-soft.de Fri Nov 12 02:31:11 2021 From: tschoening at am-soft.de (=?utf-8?Q?Thorsten_Sch=C3=B6ning?=) Date: Fri, 12 Nov 2021 08:31:11 +0100 Subject: [Borgbackup] Problem with borg mount In-Reply-To: <4b2f059f-e1af-eb88-b5bc-4092f6e9ed73@gmail.com> References: <4b2f059f-e1af-eb88-b5bc-4092f6e9ed73@gmail.com> Message-ID: <1536985035.20211112083111@am-soft.de> Guten Tag Joseph Hesse, am Freitag, 12. November 2021 um 03:43 schrieben Sie: > /borg/fusermountcloud: Mountpoint must be a writable directory > Press any key for menu It would be helpful to see the exact commands you have issued and how the BORG server needs to be accessed at all. It's not clear if it's simply some public BORG instance or accessed using some SSH tunnel or using some VPN or ... All of that might make a huge difference when it comes to how BORG+FUSE behave. Additionally, have a look at SYSLOG etc. and provide related error messages. Most likely especially those related to network, SSH, FUSE etc. Besides that, did you only try foreground with yxour "cloud server"? If so, try with the local disk as well. The easier the overall setup the better. Besides using MOUNT, did you try commands like LIST, EXTRACT etc. and did those work? They should in theory if CHECK works. This helps nailing the issue down to MOUNT+FUSE. Mit freundlichen Gr??en Thorsten Sch?ning -- AM-SoFT IT-Service - Bitstore Hameln GmbH Mitglied der Bitstore Gruppe - Ihr Full-Service-Dienstleister f?r IT und TK E-Mail: Thorsten.Schoening at AM-SoFT.de Web: http://www.AM-SoFT.de/ Tel: 05151- 9468- 0 Tel: 05151- 9468-55 Fax: 05151- 9468-88 Mobil: 0178-8 9468-04 AM-SoFT IT-Service - Bitstore Hameln GmbH, Brandenburger Str. 7c, 31789 Hameln AG Hannover HRB 221853 - Gesch?ftsf?hrer: Janine Galonska From ndbecker2 at gmail.com Mon Dec 20 10:01:56 2021 From: ndbecker2 at gmail.com (Neal Becker) Date: Mon, 20 Dec 2021 10:01:56 -0500 Subject: [Borgbackup] Cache, or information obtained from the security directory is newer than repository - this is either an attack or unsafe (multiple repos with same ID) Message-ID: I run borg on my client to a remote server (via ssh). Periodically I clone the repo using rsync to a usb HD. The server is currently broken (SSD issue, I believe). I have the clone repo usb drive. If I try to run borg backup from my client to the cloned drive I get Cache, or information obtained from the security directory is newer than repository - this is either an attack or unsafe (multiple repos with same ID) So I guess I can't run backups for now? More concerning, I also can't even mount the drive to retrieve a file: $ borg mount /run/media/nbecker/backup/nbecker2 ~/borgmnt/ Cache, or information obtained from the security directory is newer than repository - this is either an attack or unsafe (multiple repos with same ID) Any thoughts or suggestions? Thanks, Neal From borgbackup at list-post.ddt-consult.de Mon Dec 20 11:24:59 2021 From: borgbackup at list-post.ddt-consult.de (=?UTF-8?Q?Markus_Sch=c3=b6nhaber?=) Date: Mon, 20 Dec 2021 17:24:59 +0100 Subject: [Borgbackup] Cache, or information obtained from the security directory is newer than repository - this is either an attack or unsafe (multiple repos with same ID) In-Reply-To: References: Message-ID: 20.12.21, 16:01 +0100, Neal Becker: > I run borg on my client to a remote server (via ssh). Periodically I > clone the repo using rsync to a usb HD. > > The server is currently broken (SSD issue, I believe). I have the > clone repo usb drive. If I try to run borg backup from my client to > the cloned drive I get > Cache, or information obtained from the security directory is newer > than repository - this is either an attack or unsafe (multiple repos > with same ID) > > So I guess I can't run backups for now? > > More concerning, I also can't even mount the drive to retrieve a file: > > $ borg mount /run/media/nbecker/backup/nbecker2 ~/borgmnt/ > Cache, or information obtained from the security directory is newer > than repository - this is either an attack or unsafe (multiple repos > with same ID) > > Any thoughts or suggestions? https://borgbackup.readthedocs.io/en/stable/faq.html#this-is-either-an-attack-or-unsafe-warning -- Regards mks From ndbecker2 at gmail.com Mon Dec 27 13:06:32 2021 From: ndbecker2 at gmail.com (Neal Becker) Date: Mon, 27 Dec 2021 13:06:32 -0500 Subject: [Borgbackup] borg hang Message-ID: borg 1.1.17 Run my usual backup, and it hangs. Tried again, and it hangs again. I tried borg delete --cache-only And after that I was able to run a backup normally. My question is, any idea what could have happened? Thanks, Neal -- Those who don't understand recursion are doomed to repeat it From jeffbrown.the at gmail.com Mon Dec 27 14:05:01 2021 From: jeffbrown.the at gmail.com (Jeffrey Brown) Date: Mon, 27 Dec 2021 14:05:01 -0500 Subject: [Borgbackup] Is running `borg key change-passphrase` and deleting old copies of the repo enough, or do I need a new repo? In-Reply-To: References: Message-ID: Hello, I'd like to change the password that encrypts my current Borg repo. I've read the documentation for `borg key change-passphrase`[1] and still don't understand if it does what I'm hoping. I don't want to create a new repo, because (please correct me if I'm wrong) there's no easy way to incorporate the old repo's history of backups into the new one. If I run `borg key change-passphrase` and delete any compromised old copies of the repo, will new copies of the repo still be readable by someone who has the old password and not the new one? Many thanks. [1] https://borgbackup.readthedocs.io/en/stable/usage/key.html -- Jeff Brown | Jeffrey Benjamin Brown LinkedIn | Github | Twitter | Facebook -------------- next part -------------- An HTML attachment was scrubbed... URL: