<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rsyncshot, branch main</title>
<subtitle>Time Machine–style rsync snapshots for Linux — hardlinked and space-cheap
</subtitle>
<id>https://git.cjennings.net/rsyncshot/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/rsyncshot/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rsyncshot/'/>
<updated>2026-04-20T13:36:28+00:00</updated>
<entry>
<title>restructure: move docs/ to .ai/ + sync latest template</title>
<updated>2026-04-20T13:36:28+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-20T13:36:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rsyncshot/commit/?id=f3c96df4e40b0cac788866764f45bffe7883ed63'/>
<id>urn:sha1:f3c96df4e40b0cac788866764f45bffe7883ed63</id>
<content type='text'>
Per claude-templates c36fd14. Claude tooling moves to hidden .ai/;
project-level docs/ reserved for real documentation.
</content>
</entry>
<entry>
<title>Add flock locking TODO to task list</title>
<updated>2026-03-04T17:58:18+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-03-04T17:58:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rsyncshot/commit/?id=8dd7ae6ff89deddf81dd26bd4b8f1ecb2054cf72'/>
<id>urn:sha1:8dd7ae6ff89deddf81dd26bd4b8f1ecb2054cf72</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add project task tracking file</title>
<updated>2026-02-19T22:26:34+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-19T22:26:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rsyncshot/commit/?id=84e09fe9819e95b16695df54ba35c08ced3ec362'/>
<id>urn:sha1:84e09fe9819e95b16695df54ba35c08ced3ec362</id>
<content type='text'>
New todo.org with Open Work and Resolved sections for task management.
</content>
</entry>
<entry>
<title>Treat rsync exit code 24 as non-fatal</title>
<updated>2026-02-12T21:13:10+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-12T21:13:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rsyncshot/commit/?id=ece640d60330ccece7dd0ec254362d4b25e2a46d'/>
<id>urn:sha1:ece640d60330ccece7dd0ec254362d4b25e2a46d</id>
<content type='text'>
Files vanishing during transfer (exit 24) is normal — temp files,
editor swap files, etc. get cleaned up while the backup runs. Log a
warning instead of aborting snapshot rotation.
</content>
</entry>
<entry>
<title>Fix snapshot rotation failure on remote filesystems</title>
<updated>2026-02-12T15:01:19+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-12T15:01:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rsyncshot/commit/?id=ac950facc08dbaf8bdda7431d434a16f4d02b222'/>
<id>urn:sha1:ac950facc08dbaf8bdda7431d434a16f4d02b222</id>
<content type='text'>
Snapshots with read-only permissions (from chmod -w at creation) and
internal dirs with restrictive modes (e.g. /etc at 555) prevented
rm -rf from deleting old snapshots during rotation. This caused
cascading mv failures and silent rotation breakage.

- Add chmod -R u+w before rm -rf of oldest snapshot
- Clean up orphan snapshots beyond retention count
- Add error checking on rm, mv, and cp -al operations
</content>
</entry>
<entry>
<title>Add .gitignore and increase rsync I/O timeout to 10 minutes</title>
<updated>2026-02-08T03:50:59+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-08T03:50:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rsyncshot/commit/?id=819a8e36263bbbed182f20040555ba2644dba1be'/>
<id>urn:sha1:819a8e36263bbbed182f20040555ba2644dba1be</id>
<content type='text'>
Add .gitignore for docs/ and inbox/. Increase rsync --timeout from
300s to 600s for slower connections.
</content>
</entry>
<entry>
<title>Add 5-minute I/O timeout to rsync transfers</title>
<updated>2026-02-05T00:58:11+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-05T00:58:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rsyncshot/commit/?id=2a4e9a4bcd5c25f2342863da4f57eda1ae8689fb'/>
<id>urn:sha1:2a4e9a4bcd5c25f2342863da4f57eda1ae8689fb</id>
<content type='text'>
Adds --timeout=300 to rsync commands to handle network interruptions
gracefully, especially over WiFi. Without this, SSH connection drops
could leave rsync hanging indefinitely.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Corrected LICENSE to BSD-3 Clause License</title>
<updated>2026-01-29T18:45:22+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-29T18:45:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rsyncshot/commit/?id=6274448078a5c42ce3758333f7b30f2d5978d192'/>
<id>urn:sha1:6274448078a5c42ce3758333f7b30f2d5978d192</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add Development section to README with Makefile targets</title>
<updated>2026-01-29T18:32:23+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-29T18:32:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rsyncshot/commit/?id=b5d7f4df21782a1e34c89d17e8a6902fe2940182'/>
<id>urn:sha1:b5d7f4df21782a1e34c89d17e8a6902fe2940182</id>
<content type='text'>
  - Add make deps to Quick Start instructions
  - Add Development section with all make targets table
  - Move Testing as subsection under Development
</content>
</entry>
<entry>
<title>Add test support and fix command alias usage</title>
<updated>2026-01-29T18:29:37+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-29T18:29:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rsyncshot/commit/?id=894f1f18be1ce0e1c03230df23154be6778488dd'/>
<id>urn:sha1:894f1f18be1ce0e1c03230df23154be6778488dd</id>
<content type='text'>
  - Make INSTALLHOME, SCRIPTLOC, LOGFILE overridable via env vars
  - Add RSYNCSHOT_SKIP_MOUNT_CHECK for testing without mount points
  - Use CP, MV, RM variables in run_cmd to avoid shell alias issues
</content>
</entry>
</feed>
