Coder Social home page Coder Social logo

btrfs-backup's People

Contributors

bob1de avatar lordsutch avatar timblechmann avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

btrfs-backup's Issues

Backup to dir?

Is it possible to send a backup to a directory? I want to backup my root drive to my local data drive, but the data drive does not use btrfs. How can I save a snapshot to that drive?

Destination not available

Hi,

I've got a laptop with Ubuntu 16.04.
I've got 2 devices:

  • /dev/sda1 in /mnt/root with 2 subvolumes @ for the / and @home for /home.
  • /dev/sdb1 in /media/abz/datalx/ where I would like to store my backup (in a directory backup/home).

I have a crontab for backup like that:

/usr/local/bin/btrfs-backup -q -N 5 -n 10 -s /mnt/root/@home /media/abz/datalx/backup/home

My problem is when my second device /media/abz/datalx is not mounted (when I not on my desk) btrfs-backup create a directory on /dev/sda1.

How could I not send my bakcup if the device is not mounted ?
But I would like the snapshot being done in local (and send later).

README.rst typo

Hi,
Almost at the end of the README.rst file I read,

_and have corresponding entries in /etc/fstab to mount the subvolumes from /active/*. One benefit of this approach is that restoring a snapshot can be done entirely with btrfs tools:

$ btrfs send /backup/root/YYMMDD-HHMMSS | btrfs receive /snapshot/home
$ btrfs send /backup/home/YYMMDD-HHMMSS | btrfs receive /snapshot/root_

.. unless I am missing something this restores root onto home and home onto root...

Archlinux package

I made a package for Archlinux. You could link it in your README.
You can click the Flag package out-of-date button when you release a new version to notify me.

ioctl(BTRFS_IOC_TREE_SEARCH, subvol_id 359) ret=-1, error: Operation not permitted

After the other error was fixed, I now seem to get this error, same setup, I see the target directory created on the remote server and then this failure.

At subvol /home/user/lib/snapshot/20180418-002105
ioctl(BTRFS_IOC_TREE_SEARCH, subvol_id 359) ret=-1, error: Operation not permitted
ERROR: cannot resolve our subvol path
00:22:44  [ERROR]  Error during btrfs send / receive

Note: both servers were updated to 0.3.1 prior to testing.

[ERROR] [sourcedir] does not seem to be a btrfs subvolume

Hello,

thanks for btrfs-backup!
I have tried to use it:

root@homeserver:/home/henfri# btrfs-backup /srv/DataPool/Fotos/ /mnt/test/
21:46:29  [INFO ]  --[ Started at Mon Oct  4 21:46:29 2021 ]---------
21:46:29  [INFO ]  Preparing endpoint /srv/DataPool/Fotos/snapshot ...
21:46:29  [ERROR]  /srv/DataPool/Fotos does not seem to be a btrfs subvolume
root@homeserver:/home/henfri# btrfs subvolume show /srv/DataPool/Fotos/ |head
Fotos
        Name:                   Fotos
        UUID:                   3b7f5796-c053-8940-9809-7dfde837a47f
        Parent UUID:            -
        Received UUID:          -
        Creation time:          2019-04-28 21:50:08 +0200
        Subvolume ID:           1381
        Generation:             1002070
        Gen at creation:        260
        Parent ID:              5

Any idea, what the reason could be?

Best regards,
Hendrik

Bad configuration option: auto_unmount

Despite having installed sshfs and pv (since I noticed via debug that pv was missing) I still cannot manage to get around this error... Unfortunately, googling for it is nye impossible because ssh is such a prolific topic :(

Any suggestions? SSH is connecting just fine, as it creates the proper dir on the destination...

12:01:50 [INFO ] Sending 20180414-120149 ...
12:01:50 [INFO ] No parent snapshot available, sending in full mode.
12:01:50 [DEBUG] Checking for pv ...
12:01:50 [DEBUG] Executing: ['pv', '--help']
12:01:50 [DEBUG] -> pv is available
12:01:50 [DEBUG] Executing: ['btrfs', 'send', '/home/user/lib/snapshot/20180414-120149']
12:01:50 [DEBUG] Executing: ['pv']
12:01:50 [DEBUG] Executing: ['ssh', '-o', 'auto_unmount', '-o', 'reconnect', '-o', 'cache=no', 'backups', 'btrfs', 'receive', '/media/backups/user/snapshots/lib']
At subvol /home/user/lib/snapshot/20180414-120149
command-line: line 0: Bad configuration option: auto_unmount

dependancies include setuptools

root@galileo:/usr/local/btrfs-backup# ./setup.py install
Traceback (most recent call last):
File "/usr/local/btrfs-backup/./setup.py", line 4, in
from setuptools import setup
ModuleNotFoundError: No module named 'setuptools'

pip3 install setuptools

and away we go.

btrfs-backup Version?

I try to make openSUSE RPM for btrfs-backup, but can't without Version.
Please add Version file or in README.md.

SSH Bad configuration option: auto_unmount

Hi,
I am trying to backup a snapshot to a remote server, but to this command:
btrfs-backup /tank ssh://my-pc/test-backups
I got the following:
11:45:04 [INFO ] --[ Started at Sun May 13 11:45:04 2018 ]--------- 11:45:04 [INFO ] Preparing endpoint /tank/snapshot ... 11:45:04 [INFO ] Preparing endpoint (SSH) my-pc/test-backups ... command-line: line 0: Bad configuration option: auto_unmount 11:45:04 [ERROR] Error on command: ['ssh', '-o', 'auto_unmount', '-o', 'reconnect', '-o', 'cache=no', 'my-pc', 'mkdir', '-p', '/test-backups']
(I'm sorry, I don't know how to set preformatted line-breaks in comments).
What is this auto_unmount option to ssh?

Repo transfer

Hi,

I'm not sure about notifications for comments on closed pull requests... Did you get them?

Just in case you didn't:

Everything seems merged ok and ready for transfer.

Best regards
Robert

Cleanup doesn't work with prefix

If you specify --snapshot-prefix foo, then the cleanup of old backups doesn't work:

backup complete
Traceback (most recent call last):
  File "/opt/btrfs-backup/btrfs-backup.py", line 224, in <module>
    delete_old_backups(backuploc,NUM_BACKUPS)
  File "/opt/btrfs-backup/btrfs-backup.py", line 115, in delete_old_backups
    bak_dir_to_remove = datestr(find_old_backup(bak_dir_time_objs, 0))
  File "/opt/btrfs-backup/btrfs-backup.py", line 84, in find_old_backup
    min_val = min(tmp) # find minimum time value
ValueError: min() arg is an empty sequence

This is caused by line 110 in delete_old_backups, where time.strptime() is applied to the snapshot directory names with the matching pattern %Y%m%d-%H%M%S, ignoring the prefix and thus not matching any directories:

                bak_dir_time_objs.append(time.strptime(directory, '%Y%m%d-%H%M%S'))

trying to snapshot over ssh

I'm trying to make a backup of the rootfs of my notebook and pushiung it to my server but it doesn't work. I can't really spot the error. Any ideas?

$ sudo btrfs-backup --sync --num-snapshots 1 --num-backups 3 --snapshot-folder '.snapshots' --snapshot-prefix 'mynotebook_root_' / ssh://username@myserver:22/home/username/backups --ssh-opt 'IdentityFile=/home/username/.ssh/id_rsa'
02:41:21  [INFO ]  --[ Started at Sun Jun 18 02:41:21 2017 ]---------
02:41:21  [INFO ]  --[ Preparing endpoints ... ]---------------------
02:41:21  [INFO ]  Creating directory: /.snapshots
02:41:21  [INFO ]  --[ Snapshotting ... ]----------------------------
02:41:21  [INFO ]  / -> /.snapshots/mynotebook_root_20170618-024121
02:41:21  [INFO ]  --[ Syncing disks ... ]---------------------------
02:41:22  [INFO ]  --[ Sending ... ]---------------------------------
02:41:22  [INFO ]  From:         mynotebook_root_20170618-024121
02:41:22  [INFO ]  To:           (SSH) username@myserver:22/home/username/backups
02:41:22  [INFO ]  No previous snapshot found, sending full backup.
At subvol /.snapshots/mynotebook_root_20170618-024121
Arch Linux \r (\l)

Enter passphrase for key '/home/username/.ssh/id_rsa': 
ioctl(BTRFS_IOC_TREE_SEARCH, subvol_id 480) ret=-1, error: Operation not permitted
ERROR: cannot resolve our subvol path
02:41:25  [ERROR]  Error during btrfs send / receive

/home/username/backups on the server is a mounted subvolume. If I just create a folder in the users homedir I get a different error:

$ sudo btrfs-backup --sync --num-snapshots 1 --num-backups 3 --snapshot-folder '.snapshots' --snapshot-prefix 'mynotebook_root_' / ssh://username@myserver:22/home/username/backups --ssh-opt 'IdentityFile=/home/username/.ssh/id_rsa'
02:46:55  [INFO ]  --[ Started at Sun Jun 18 02:46:54 2017 ]---------
02:46:55  [INFO ]  --[ Preparing endpoints ... ]---------------------
02:46:55  [INFO ]  --[ Snapshotting ... ]----------------------------
02:46:55  [INFO ]  / -> /.snapshots/mynotebook_root_20170618-024654
02:46:55  [INFO ]  --[ Syncing disks ... ]---------------------------
02:46:55  [INFO ]  --[ Sending ... ]---------------------------------
02:46:55  [INFO ]  From:         mynotebook_root_20170618-024654
02:46:55  [INFO ]  To:           (SSH) username@myserver:22/home/username/backups
02:46:55  [INFO ]  No previous snapshot found, sending full backup.
At subvol /.snapshots/mynotebook_root_20170618-024654
Arch Linux \r (\l)

Enter passphrase for key '/home/username/.ssh/id_rsa': 
ERROR: cannot open /home: Operation not permitted
02:46:59  [ERROR]  Error during btrfs send / receive

/home is a subvolume on the server.

Feature request: parse-able output (JSON?)

We are doing offsite backups from a VPS to a residential based server where the internet can be spotty at times... what I am noticing is that the backups will get synced the next time a successful remote connection is made from the host to the residential side... however, it would be nice to be able to indicate X snapshots transferred in Y seconds when these cases happen.

I push the results from btrfs-backup -P to a variable and then pipe that variable to pushbullet for a poor man's monitoring system... this results in a message like:

snapshotname=At snapshot 20180430-174503

Or when the remote connection fails...
snapshotname=

Would love to be able to output more meaningful logs to my client.

I'll take a stab at this myself as well, but python is not my forte these days.

Thanks again for an awesome utility!

Dangling repetitive SSH mounts?

Not sure this would be explicitly a btrfs-backup issue but my remote server just crashed w/OOM and the culprit from the best we can tell was a ton of ssh mounts for our offsite backups via /tmp/mountPaths

fusermount -o rw,nosuid,nodev,fsname=backups:/,auto_unmount,subtype=sshfs -- /tmp/tmp83c_e6yb/mnt
sshfs -o auto_unmount -o reconnect -o cache=no backups:/ /tmp/tmp83c_e6yb/mnt

Taking advantage of this downtime to do OS updates but will be happy to provide more details once I have backups up and running again (and hopefully not eating memory)

Instead of caveat, refer to flock(1)

Instead of contemplating reimplementing locking in btrfs-backup, you could just tell people to use flock(1) utility for locking. flock -n is perfect for this usecase :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.