<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>.:: Marcos Dione/StyXman's glob ::. (Posts about backup)</title><link>https://www.grulic.org.ar/~mdione/glob/</link><description></description><atom:link href="https://www.grulic.org.ar/~mdione/glob/categories/backup.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2025 &lt;a href="mailto:mdione@grulic.org.ar"&gt;Marcos Dione&lt;/a&gt; </copyright><lastBuildDate>Sat, 15 Nov 2025 20:52:05 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Collating, processing, managing, backing up and serving a gallery of a 350GiB, 60k picture collection</title><link>https://www.grulic.org.ar/~mdione/glob/posts/collating-processing-managing-backing-up-and-serving-a-gallery-of-a-350gib-60k-picture-collection/</link><dc:creator>Marcos Dione</dc:creator><description>&lt;p&gt;In the last
&lt;a href="https://en.osm.town/@mdione/112376851535336773"&gt;two&lt;/a&gt;
&lt;a href="https://en.osm.town/@mdione/112399328668312076"&gt;days&lt;/a&gt;
I have commented a little bit how I process and manage my photos.
I'm not a very avid photographer, I have like 350 gigabytes of photos, most of them are
yet not processed, around 60,000 of them.
So I will comment a little bit more how do I manage all that.&lt;/p&gt;
&lt;p&gt;I start with the camera, a 24Mpx camera, just a couple of lenses, nothing fancy.
Go out, take some pictures, come back home.&lt;/p&gt;
&lt;p&gt;I put the SD camera on my computer and I use my own software to import it.
The import process is not fancy, it just empties the SD card, checks every file for the
EXIF information, uses the date and time to create the filename, a sequence number if needed,
and puts them all in a single
&lt;code&gt;incoming&lt;/code&gt; directory where all the current unprocessed images are&lt;sup id="fnref:1"&gt;&lt;a class="footnote-ref" href="https://www.grulic.org.ar/~mdione/glob/posts/collating-processing-managing-backing-up-and-serving-a-gallery-of-a-350gib-60k-picture-collection/#fn:1"&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Then I use this software I developed in &lt;code&gt;PyQt5&lt;/code&gt;.
It's very, very basic, but it's really quick, it's mostly keyboard based. It reads
the EXIF information and present some of the tags at the left of the screen; things like date,
time, size, orientation and then focal length, aperture, ISO and various other data I can
get from the images. It's mostly focused on my current camera and the previous one, both Nikons&lt;sup id="fnref:2"&gt;&lt;a class="footnote-ref" href="https://www.grulic.org.ar/~mdione/glob/posts/collating-processing-managing-backing-up-and-serving-a-gallery-of-a-350gib-60k-picture-collection/#fn:2"&gt;2&lt;/a&gt;&lt;/sup&gt;.
The previous one was an N90, right now it's an N7200.
The image occupies most of the window, and the program is always in full screen.
At the bottom there's the filename and a couple of toggles.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="https://www.grulic.org.ar/~mdione/glob/images/filter.png"&gt;&lt;/p&gt;
&lt;p&gt;I can do several things with this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Go forwards, backwards, by one, by ten, by a hundred
and by a thousand, because that &lt;code&gt;incoming&lt;/code&gt; directory right now has almost seven years of history,
probably ten thousand pictures.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Move randomly, which allows me to pick up a new thing to collate when I get
bored with the current one but I want to keep doing it to reduce the backlog.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mark the images in different ways. The main ones are about selecting for storing, with two modes:
One is to keep the image in the original size. I usually use this for my best landscape or astro photos. The other one will
resize it down to twelve megapixels&lt;sup id="fnref:3"&gt;&lt;a class="footnote-ref" href="https://www.grulic.org.ar/~mdione/glob/posts/collating-processing-managing-backing-up-and-serving-a-gallery-of-a-350gib-60k-picture-collection/#fn:3"&gt;3&lt;/a&gt;&lt;/sup&gt;, from 6000x4000 pixels to 4500x3000 pixels, 75% on each dimension.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;Rotate the images, just in case the camera did not guess the orientation
correctly, usually when I'm taking pictures right upward or right downwards.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select several pictures for stitching, which will use
&lt;a href="https://hugin.sourceforge.io/"&gt;&lt;code&gt;hugin&lt;/code&gt;&lt;/a&gt; to do so. It's not 100% automatic, but at least puts the pictures in a &lt;code&gt;stitch&lt;/code&gt;
directory and point &lt;code&gt;hugin&lt;/code&gt; there.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select a picture for cropping or editing; I'm not going
to develop a whole image editor, so I just delegate to an existing program, &lt;a href="https://apps.kde.org/gwenview/"&gt;&lt;code&gt;gwenview&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select images for deleting and delete them permanently.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select several images for comparison and enter/exit comparison mode,
which means that going backwards and forwards applies only this this set.
This is good for things like when you take certain pictures, but there are not necessarily
sequences in the original picture sequence, which for me makes culling images faster.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;It has two zoom levels, fit to screen and full size.
I don't have much the need for other options.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;99% of the pictures I take are freehand,
so in a sequence there's always some movement between images. In full size I can put every image on its own position,
aligning the whole sequence and allow culling based on blurriness or other factors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Also in full size, I can lock the view, so when I pan one of the images
and I switch to another one, it will also pan that second image to that position.
It also helps when I'm checking for details between two different images of the same thing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Move all the selected images, resize them if needed, and put them in a folder. It also creates a hardlink
between my categorization in folders into a folder that collects all the images by date; there's one folder
for each month and year with all the pictures of that month inside.
It uses hardlinks so it doesn't duplicate the image file, saving space.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It also has a readonly mode, so I can hand the computer to my kids to watch the photos.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When culling, I use the comparison mode and individual position and lock view features a lot,
going back and forth between images, discarding until only one is left.&lt;/p&gt;
&lt;p&gt;That's the first part, the one I must spend my time on, just basic culling, selection and storage.
My main tree is just a tree based on my way of categorizing the images.&lt;/p&gt;
&lt;p&gt;My program doesn't have a directory view; instead, I just use &lt;code&gt;gwenview&lt;/code&gt; again.&lt;/p&gt;
&lt;p&gt;Notice there's no photo editing in this workflow. I rarely shoot in RAW for two reasons: a) I'm really bad at
postprocessing; and b) even if I was good, I don't have the time to do it; my free time is shared among several
hobbies. I only do it for astro photograpy and very few, rare occasions.&lt;/p&gt;
&lt;p&gt;The third tool I use is &lt;a href="https://www.digikam.org/"&gt;&lt;code&gt;digikam&lt;/code&gt;&lt;/a&gt;. I use it for two things, which are related:
semi-automatic and manual tagging.
The semi-automatic is face detection; &lt;code&gt;digikam&lt;/code&gt; can find and guess faces, but requires manual confirmation&lt;sup id="fnref:4"&gt;&lt;a class="footnote-ref" href="https://www.grulic.org.ar/~mdione/glob/posts/collating-processing-managing-backing-up-and-serving-a-gallery-of-a-350gib-60k-picture-collection/#fn:4"&gt;4&lt;/a&gt;&lt;/sup&gt;.
The fully manual part is plain tagging, mostly with location&lt;sup id="fnref:5"&gt;&lt;a class="footnote-ref" href="https://www.grulic.org.ar/~mdione/glob/posts/collating-processing-managing-backing-up-and-serving-a-gallery-of-a-350gib-60k-picture-collection/#fn:5"&gt;5&lt;/a&gt;&lt;/sup&gt; and sometimes some other info.
I sometimes also rate my pictures; I mostly use four and five, sometimes three, only for my best pictures.&lt;/p&gt;
&lt;p&gt;Then there's another script that reads the &lt;code&gt;digikam&lt;/code&gt; database and uses
the tags to create another directory for the tags, which also uses hardlinks.
It still doesn't do anything about the rating, but I could easily add that.&lt;/p&gt;
&lt;p&gt;That's all on my personal computer. I use &lt;code&gt;rsync&lt;/code&gt; to make a copy on my home server that has two purposes.
One, it's a backup, which includes all the original 24Mpx images that I hadn't culled yet,
which I think is the biggest part of my collection.&lt;/p&gt;
&lt;p&gt;The second one, it feeds a
&lt;a href="https://www.files.gallery/"&gt;gallery program&lt;/a&gt; that is developed in PHP by a guy named Karl. It's probably
the single paid software I use. It's a single PHP file that you put at the root of your gallery, you enable
PHP processing by your web server (in my case, Apache), and generates the gallery on the run,
just reading the directories and creating all the necessary thumbnails and all that.
I did a small change to this program. The original algorithm creates thumbnails based on each file's path
(and other attributes, 4 or 5 I think), but because I have all these hard links, it creates duplicated
thumbnail files. So I changed it to use the filename instead of the filepath&lt;sup id="fnref:6"&gt;&lt;a class="footnote-ref" href="https://www.grulic.org.ar/~mdione/glob/posts/collating-processing-managing-backing-up-and-serving-a-gallery-of-a-350gib-60k-picture-collection/#fn:6"&gt;6&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;I don't have any kind of synchronization with my phone.
Most of the pictures I take with it are not the kind of pictures I usually will put in my own gallery, except
the times I go out without my camera and I end up taking pictures anyway.
I still don't have a workflow for that, it's mostly manual.
So if I ever lose my phone, I'm fscked because I have definitely no backups of it.&lt;/p&gt;
&lt;p&gt;That lack of synchronization also means that the only way to see the pictures in my phone is by opening the gallery
in the browser. It's not the best, but I don't do that that often.
I have tried to use alternatives like NextCloud, which I also have installed on my home server.
I have some issues with permissions because, again, this is a backup directory, so it has
all the owner information that belongs to me, instead of the web server.
That means it doesn't have the proper permissions to let NextCloud manage
those files. Luckily &lt;code&gt;files.gallery&lt;/code&gt; just needs a subdirectory.&lt;/p&gt;
&lt;p&gt;Another reason is that before I was using static gallery generators: &lt;code&gt;sigal&lt;/code&gt;, &lt;code&gt;gallerpy&lt;/code&gt; or even &lt;code&gt;nikola&lt;/code&gt;, which
drives this glob. All those can generate the gallery statically, so serving them is so much easier.
My old home server died at some point and I had to come up with something.
I had a spare old laptop laying around and I used that. Now it's enough to generate the gallery on the fly.
I have plans to make something bigger, but that's for another time.&lt;/p&gt;
&lt;div class="footnote"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;In fact I have another directory for all the unprocessed photos from another era, and I'm thinking of starting a
  new era. &lt;a class="footnote-backref" href="https://www.grulic.org.ar/~mdione/glob/posts/collating-processing-managing-backing-up-and-serving-a-gallery-of-a-350gib-60k-picture-collection/#fnref:1" title="Jump back to footnote 1 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;Even if EXIV is a standard for &lt;em&gt;storing&lt;/em&gt; tags, there's no standard for the tag &lt;em&gt;names&lt;/em&gt;, so every
  manufacturer has its own sets, that even change between camera lines. For a better idea of what I'm talking about,
  just peruse &lt;a href="https://github.com/exiftool/exiftool/tree/master/lib/Image/ExifTool"&gt;&lt;code&gt;Image::ExifTool&lt;/code&gt;'s source code&lt;/a&gt;. &lt;a class="footnote-backref" href="https://www.grulic.org.ar/~mdione/glob/posts/collating-processing-managing-backing-up-and-serving-a-gallery-of-a-350gib-60k-picture-collection/#fnref:2" title="Jump back to footnote 2 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;I currently own no screen that is 4500 pixels of width, let alone 6000. Maybe my kids will, but by then
  Mpx count will be so different that it won't make any sense to accomodate that. Right now storage for me is
  expensive, so I'll keep it this way. &lt;a class="footnote-backref" href="https://www.grulic.org.ar/~mdione/glob/posts/collating-processing-managing-backing-up-and-serving-a-gallery-of-a-350gib-60k-picture-collection/#fnref:3" title="Jump back to footnote 3 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;Or rejection: the false positive rate is bigger that I would like, and it doesn't have a way to say 'yes, this is
  that person, but don't train on this image'. This is the case for pictures where the face is either semi occluded,
  sometimes painted, sometimes bad lightning, and mostly just blurry. &lt;a class="footnote-backref" href="https://www.grulic.org.ar/~mdione/glob/posts/collating-processing-managing-backing-up-and-serving-a-gallery-of-a-350gib-60k-picture-collection/#fnref:4" title="Jump back to footnote 4 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:5"&gt;
&lt;p&gt;Most of my pictures don't have GPS info, not even the ones in the phone. The latter I only enable when I really
  need the info later, mostly for mapping. Later I either discard the photo or remove the info. &lt;a class="footnote-backref" href="https://www.grulic.org.ar/~mdione/glob/posts/collating-processing-managing-backing-up-and-serving-a-gallery-of-a-350gib-60k-picture-collection/#fnref:5" title="Jump back to footnote 5 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:6"&gt;
&lt;p&gt;For a while now I'm even making this distinction in my own code, filename vs filepath. &lt;a class="footnote-backref" href="https://www.grulic.org.ar/~mdione/glob/posts/collating-processing-managing-backing-up-and-serving-a-gallery-of-a-350gib-60k-picture-collection/#fnref:6" title="Jump back to footnote 6 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description><category>backup</category><category>gallery</category><category>nextcloud</category><category>photography</category><category>php</category><category>pyqt</category><category>python</category><category>qt</category><guid>https://www.grulic.org.ar/~mdione/glob/posts/collating-processing-managing-backing-up-and-serving-a-gallery-of-a-350gib-60k-picture-collection/</guid><pubDate>Tue, 07 May 2024 11:06:03 GMT</pubDate></item><item><title>Incrementally backing up Cassandra with Amanda</title><link>https://www.grulic.org.ar/~mdione/glob/posts/incrementally-backing-up-cassandra-with-amanda/</link><dc:creator>Marcos Dione</dc:creator><description>&lt;p&gt;&lt;em&gt;Warning&lt;/em&gt;: this has not been tested yet.&lt;/p&gt;
&lt;p&gt;Again, TL;DR version at the end.&lt;/p&gt;
&lt;p&gt;They say that backing up in C* really easy: you just run &lt;code&gt;nodetool
snapshot&lt;/code&gt;, which only creates a hardlink for each data file somewhere
else in the filesystem, and then you just backup those hardlinks.
Optionally, when you're done, you simply remove them and that's it. &lt;/p&gt;
&lt;p&gt;But that's only the half of the story. The other half is taking those
snapshots and storing them somehwere else; let's say, a backup server,
so you can restore the data even in case of spontaneous combustion
followed by explosion due to shortcircuits caused by your dog peeing on
the machine. Not that that happens a lot in a datacenter, but one has to
plan for any contingency, right?&lt;/p&gt;
&lt;p&gt;In our case we use &lt;a href="http://wiki.zmanda.com/"&gt;Amanda&lt;/a&gt;, which internally
uses an implementation of &lt;code&gt;tar&lt;/code&gt; or GNU tar if asked for (yes, also other
tools if asked). The problems begin with how you define what to backup
and where does C* put those snapshots. The definitions are done by what
Amanda calls disklists, which are basically a list of directories to
backup entirely. In the other hand, for a column family Bar in a
keyspace Foo, whose data are normally stored in
&lt;code&gt;&amp;lt;data_file_directory&amp;gt;/Foo/Bar/&lt;/code&gt;, a snapshot is located in
&lt;code&gt;&amp;lt;data_file_directory&amp;gt;/Foo/Bar/snapshots/&amp;lt;something&amp;gt;&lt;/code&gt;, where something
can be a timestamp or a name defined by the user at snapshot time.&lt;/p&gt;
&lt;p&gt;If you want to simplify your backup configuration, you'll probably will
want to say &lt;code&gt;&amp;lt;data_file_directory&amp;gt;/*/*/snapshots/&lt;/code&gt; as the dirs to
backup, but Amanda merrily can't expand wildcards in disklists. A way to
solve this is to create a directory sibling of &lt;code&gt;&amp;lt;data_file_directory&amp;gt;&lt;/code&gt;,
move the files in the snapshots there, and specify it in the disklists.
That kinda works...&lt;/p&gt;
&lt;p&gt;... until your second backup pass comes and you find out that even when
you specified an incremental backup, it copies over all the snapshot
files again. This is because when a hardlink is created, the ctime of
the inode is changed. Guess what &lt;code&gt;tar&lt;/code&gt; uses to see if a file has
changed... yes, ctime and mtime&lt;sup id="fnref:1"&gt;&lt;a class="footnote-ref" href="https://www.grulic.org.ar/~mdione/glob/posts/incrementally-backing-up-cassandra-with-amanda/#fn:1"&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;So we're back to square one, or zero even. Seems like the only solution
is to use C*'s native 'support' for incrementality, but the docs are
just
&lt;a href="http://www.datastax.com/docs/1.0/operations/backup_restore"&gt;a couple of paragraphs&lt;/a&gt;
that barely explain how they're done (suprise, the same way as the
snapshots) and how to activate it, which is the reason why we didn't
followed this path from the beginning. So in the end, it seems that you
can't use Amanda or &lt;code&gt;tar&lt;/code&gt; to make incremental backups, even with the
native support.&lt;/p&gt;
&lt;p&gt;But then there's a difference between the snapshot and the incremental
mode: with the snapshot method, you create the snapshot just before
backing it up, which sets all the ctimes to now. C*'s incremental mode
"hard-links each flushed SSTable to a backups directory under the
keyspace data directory", so they have roughly the same ctime as the
mtimes, and neither never ever changes (remember, SSTables are
inmutable) again (until we do a snapshot, of course).&lt;/p&gt;
&lt;p&gt;One particularity that I noticed is that only new SSTables are backed
up, but not those that are the result of compactions. At the beginning I
thought this was wrong, but after discussing the issue with &lt;code&gt;driftx&lt;/code&gt; in
the IRC channel and a confirmation by Tyler Hobbs in the mailing list,
we came to the following conclussion: with also compacted SSTables, at
restore time you would need to do a manual compaction to minimize data
duplication, which otherwise means more SStables associated by the Bloom
filters and more disk reads/seeks per get and more space used; but if
you don't backup/restore those SStables, the manual compaction is only
advisable. Also, as a consequence, you don't need to track which files
were deleted between backups.&lt;/p&gt;
&lt;p&gt;So the remaining problem is to know which files have been backed up,
because C* backups, just like snapshots, are not automatically cleaned.
I came up with the following solution, which at the beginning it might
seem complicated, but it really isn't.&lt;/p&gt;
&lt;p&gt;When we do a snapshot, which is perfect for full backups, we previously
remove all the files present in  the backup directory; incremental files
since the last incremental backup are not needed because we're doing a
full anyways. At the end of this we have the files ready for the full;
we do the backup, and we erase the files.&lt;/p&gt;
&lt;p&gt;Then the following days we just add the dynamic backups so far, preceded
by a flush, so as to have the last data in the SSTables and not depend
on CommitLogs. As they're only the diff against the files in the full,
and not the intermediate compacted SSTables, they're as big as they
should (but also as small as they could, if you're worried about disk
ussage). Furthermore, the way we put files in the backup dir is via
symlinks, so it doesn't change the file's mtime or ctime, and we
configure Amanda to dereference symlinks.&lt;/p&gt;
&lt;p&gt;Later, at restore time, the files are put in the backup directory, and
with a script that takes the KS and CF from the file's name, they're
'dealed' to the right directories.&lt;/p&gt;
&lt;h2&gt;TL;DR version&lt;/h2&gt;
&lt;h3&gt;Full backup&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Remove old incremental files and symlinks.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nodetool snapshot&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Symlink all the snapshot files to a backup directory&lt;/li&gt;
&lt;li&gt;Backup that directory dereferencing symlinks.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nodetool clearsnapshot&lt;/code&gt; and remove symlinks.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Incremental backup&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;nodetool flush&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Symlink all incremental files into the bakup directory.&lt;/li&gt;
&lt;li&gt;Backup that directory dereferencing symlinks.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Restore&lt;sup id="fnref:2"&gt;&lt;a class="footnote-ref" href="https://www.grulic.org.ar/~mdione/glob/posts/incrementally-backing-up-cassandra-with-amanda/#fn:2"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Restore the last full backup and all the incrementals.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="footnote"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;&lt;a href="http://sepp.oetiker.ch/tar-1.16.x-mo/tar_37.html#SEC88"&gt;&lt;code&gt;tar&lt;/code&gt;'s docs&lt;/a&gt;
  are not clear in what exactly it uses, ("Incremental dumps depend
  crucially on time stamps"), but
  &lt;a href="http://wiki.zmanda.com/index.php/Exclude_and_include_lists"&gt;Amanda's&lt;/a&gt;
  seems to imply such a thing ("Tar has the ability to preserve the
  access times[;] however, doing so effectively disables incremental
  backups since resetting the access time alters the inode change
  time, which in turn causes the file to look like it needs to be
  archived again.") &lt;a class="footnote-backref" href="https://www.grulic.org.ar/~mdione/glob/posts/incrementally-backing-up-cassandra-with-amanda/#fnref:1" title="Jump back to footnote 1 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;Actually is not that simple. &lt;a href="https://www.grulic.org.ar/~mdione/glob/posts/restoring-cassandra-online/"&gt;The previous post&lt;/a&gt; in this series already shows how it
could get more complicated. &lt;a class="footnote-backref" href="https://www.grulic.org.ar/~mdione/glob/posts/incrementally-backing-up-cassandra-with-amanda/#fnref:2" title="Jump back to footnote 2 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description><category>backup</category><category>cassandra</category><category>sysadmin</category><guid>https://www.grulic.org.ar/~mdione/glob/posts/incrementally-backing-up-cassandra-with-amanda/</guid><pubDate>Wed, 12 Sep 2012 19:19:23 GMT</pubDate></item></channel></rss>