Update README.md

This commit is contained in:
2026-08-14 21:05:27 +01:00
parent dab27f134d
commit 34306f071f
+29 -55
View File
@@ -11,7 +11,7 @@ that have already been backed up. This allows the same source folder
to be imported repeatedly without creating duplicate copies.
## WHAT IT DOES
### WHAT IT DOES
Given a source folder and a destination folder, o-phone.py:
@@ -44,7 +44,7 @@ This makes it safe to run the program again later when new photos
and videos have been copied from the phone.
## DIRECTORY STRUCTURE
### DIRECTORY STRUCTURE
The normal destination structure looks like this:
@@ -75,7 +75,7 @@ phone-media-backup/
+-- u-xxx/
## MEDIA ORGANISATION
### MEDIA ORGANISATION
Images and videos are organised by:
@@ -93,8 +93,7 @@ The month is written as its full English name rather than a
numeric month.
FILENAMES
=========
### FILENAMES
Imported files are renamed to:
@@ -113,8 +112,7 @@ The SHA-256 hash of the actual file contents is the authoritative
duplicate identifier.
SCREENSHOTS
===========
### SCREENSHOTS
PNG files are treated as screenshots.
@@ -128,8 +126,7 @@ Other supported image formats remain in the normal date-based
directory structure.
UNKNOWN FILE TYPES
==================
### UNKNOWN FILE TYPES
Files with formats that are not recognised as normal photo or
video media are placed into a directory based on their extension.
@@ -151,8 +148,7 @@ would become:
u-xyz/
FILES WITHOUT AN EXTENSION
==========================
### FILES WITHOUT AN EXTENSION
Files without a usable extension are handled separately rather
than being silently discarded.
@@ -160,8 +156,7 @@ than being silently discarded.
The exact handling depends on the current version of o-phone.py.
DUPLICATE DETECTION
===================
### DUPLICATE DETECTION
Duplicate detection is based on SHA-256.
@@ -189,8 +184,7 @@ This is important because phones can rename files or give different
metadata to the same media.
WHY USE A DATABASE?
===================
### WHY USE A DATABASE?
The SQLite database acts as an index of the backup.
@@ -221,8 +215,7 @@ SQLite is built into Python, so no external database server is
required.
IMPORTANT: DATABASE UPDATE ORDER
================================
### IMPORTANT: DATABASE UPDATE ORDER
The database should only be updated after a successful copy.
@@ -241,8 +234,7 @@ This prevents a failed or incomplete copy from being recorded as
successfully backed up.
RUNNING THE PROGRAM
===================
### RUNNING THE PROGRAM
The basic command is:
@@ -254,8 +246,7 @@ Example:
"/Users/yourname/Desktop/phone-backup-moto-g13" \
"/Volumes/all/phone-media-backup"
SOURCE
------
### SOURCE
The first argument is the folder containing the files imported from
your phone.
@@ -269,8 +260,7 @@ Example:
/Users/yourname/Desktop/phone-backup-moto-g13/
DESTINATION
-----------
### DESTINATION
The second argument is the root folder of the backup.
@@ -281,8 +271,7 @@ For example:
The destination can be located on an external hard drive or SSD.
RECOMMENDED WORKFLOW
====================
### RECOMMENDED WORKFLOW
When new photos are available on the phone:
@@ -308,8 +297,7 @@ directories.
Therefore it is safe to use the same destination repeatedly.
DRY RUN
=======
### DRY RUN
The program supports a dry-run mode when available in the current
version.
@@ -324,8 +312,7 @@ Example:
Always check the output before performing a large import.
DATABASE
========
### DATABASE
The SQLite database is stored inside the destination directory.
@@ -342,8 +329,7 @@ Do not delete or manually modify the database unless you understand
the consequences.
DATABASE INTEGRITY
==================
### DATABASE INTEGRITY
The database is an index of the files in the backup.
@@ -364,8 +350,7 @@ The check should be used periodically, especially after manually
changing files on the backup drive.
DO NOT MANUALLY ORGANISE THE BACKUP
===================================
### DO NOT MANUALLY ORGANISE THE BACKUP
Once files have been imported, it is recommended not to manually
rename or move them.
@@ -379,8 +364,7 @@ If files need to be reorganised, future versions of the program may
provide dedicated maintenance commands.
SOURCE FILES ARE NOT DELETED
============================
### SOURCE FILES ARE NOT DELETED
o-phone.py is intended to be a backup/import tool.
@@ -391,8 +375,7 @@ The source files should remain available until you have independently
confirmed that the backup is complete and healthy.
FILE DATES
==========
### FILE DATES
The program attempts to determine the most useful date associated
with each media file.
@@ -414,8 +397,7 @@ When metadata is unavailable, the program uses an appropriate
fallback.
RAW FILES
=========
### AW FILES
RAW camera files are preserved rather than converted.
@@ -424,8 +406,7 @@ They are treated as source files and copied to the backup.
The original RAW data is not modified.
SUPPORTED MEDIA
===============
### SUPPORTED MEDIA
The exact list of supported extensions is defined in o-phone.py.
@@ -455,8 +436,7 @@ The program may recognise additional formats.
Unknown formats are not automatically discarded.
REQUIREMENTS
============
### REQUIREMENTS
macOS or another operating system with Python 3.
@@ -468,8 +448,7 @@ separate database server.
Some optional functionality may require additional Python packages.
INSTALLATION
============
### INSTALLATION
Check Python:
@@ -480,8 +459,7 @@ Run the program directly:
python3 o-phone.py SOURCE DESTINATION
SAFETY
======
### SAFETY
Before using o-phone.py with an important archive:
@@ -502,8 +480,7 @@ Before using o-phone.py with an important archive:
8. Keep another independent backup of important media.
IMPORTANT PRINCIPLE
===================
### IMPORTANT PRINCIPLE
The SHA-256 hash is the identity of the file.
@@ -522,8 +499,7 @@ Conversely, two files with the same filename are not considered
duplicates if their contents differ.
PROJECT PHILOSOPHY
==================
### PROJECT PHILOSOPHY
The goal of o-phone.py is to provide a simple, dependable and
repeatable way to build a personal media archive.
@@ -540,8 +516,7 @@ The important principles are:
- Prefer simple, inspectable storage over proprietary formats.
EXAMPLE
=======
### EXAMPLE
Suppose the phone contains:
@@ -579,8 +554,7 @@ If the same source files are imported again, their hashes will
already exist in the database and they will be skipped.
BACKUP REMINDER
===============
### BACKUP REMINDER
A single external drive is not a complete backup strategy.