# 旅行照全混一起？用 Phockup 按日期整理，8 張為什麼只存成 6 張

- 網址：https://blog.valenvan.uk/posts/ivandokov-phockup.html
- 發布日期：2026-10-31
- 測試設備：Mac mini M4 Pro（12 核、64GB）
- 專案：ivandokov/phockup（https://github.com/ivandokov/phockup），MIT 授權
- 測試版本：Phockup 1.13.0 / 8591be3ac6de83a1755e3aa35dd1fddba9e854e0
- 實測影片：https://www.youtube.com/watch?v=FKoZby5XEOs

## 重點摘要

- 本次以8張自製JPEG測試Phockup，輸出6張照片，原始8張仍保留。
- 5張有拍攝日期的不同照片分進3天，其中2張同秒照片都保留，碰名時加上編號。
- 2張內容完全相同的副本被略過，1張沒有拍攝日期的圖片放進unknown。
- 來源與輸出的6種不同內容經SHA-256集合比對完全相符；本次預覽沒有建立輸出資料夾。
- **結論：** 本次8張自製照片完成日期分類，兩張同秒不同照片與一張無日期圖都保留。
- **適合：** 本次驗證可用指令把有拍攝日期的JPEG複製到年、月、日資料夾。
- **不適合：** 本次未測真實相機、HEIC、影片、大型照片庫或人物分類。

| 實測項目 | 結果 |
|---|---|
| 輸入照片 | 8張自製JPEG |
| 輸出照片 | 6張 |
| 有日期的不同照片 | 5張、3天 |
| 重複副本 | 2張略過 |
| 無日期圖片 | 1張進unknown |
| 原始照片 | 8張仍存在 |
| 內容核對 | 6種不同內容SHA-256集合相符 |

去年海邊、今年出遊的照片，都匯出到同一個資料夾。想找某一天的照片，只好打開縮圖慢慢翻；同一批又從記憶卡複製過一次，連重複檔也混進來。Phockup 處理的就是這類工作：讀取照片裡的拍攝日期，把檔案複製到年、月、日資料夾，並依日期時間重新命名。它是指令工具，適合願意照步驟操作、一次整理一批照片的人。

## 這次真的測了什麼

測試設備為 Mac mini M4 Pro，12 核心、64GB 記憶體。受測程式為 Phockup 1.13.0，來源固定在 `8591be3ac6de83a1755e3aa35dd1fddba9e854e0`。照片全部是自行產生的 JPEG 測試圖，不是實際旅行相簿，也沒有使用私人照片。

我們準備五張不同內容、有拍攝日期的圖，再複製其中兩張，最後加上一張沒有拍攝日期的圖，共八張。五張有日期的圖分屬三天，其中兩張刻意設為同一秒，測試會不會互相蓋掉。

| 檢查項目 | 實測結果 |
| --- | --- |
| 來源照片 | 8 張，執行後仍全部保留 |
| 整理後照片 | 6 張 |
| 有日期的不同照片 | 5 張，分進 3 天 |
| 完全相同的副本 | 略過 2 張，不再複製一次 |
| 沒有拍攝日期 | 1 張，放進 unknown |
| 同一秒、不同內容 | 2 張都保留，其中一張加編號 |

此外，來源有六種不同內容，我們逐一算出 SHA-256，再比對輸出照片的雜湊集合，六種內容完全相符。這表示本次沒有漏掉不同內容的圖，不代表所有相機格式、影片或大型照片庫都已驗證。

## 先裝好，再準備兩個位置

作者 README 提供 Mac 的 Homebrew 安裝方式：

```bash
brew tap ivandokov/homebrew-contrib
brew install phockup
```

這兩行是作者文件列出的方式，本次沒有在 Mac 安裝驗證。實際測試使用來源碼、Python 3.12.14、ExifTool 12.57 與 requirements.txt 的 tqdm 4.66.1。需要重現相同來源版本，可依下列順序準備 Python 與 ExifTool：

```bash
apt-get update -qq
apt-get install -y -qq python3 python3-pip git libimage-exiftool-perl
git clone https://github.com/ivandokov/phockup.git
cd phockup
git checkout 8591be3ac6de83a1755e3aa35dd1fddba9e854e0
pip install -r requirements.txt
python3 phockup.py --version
```

套件管理指令需要相應的安裝權限；不同系統請用作者對應的安裝方法。接著挑一小批照片副本放進來源資料夾，另外指定一個整理後的位置。兩個位置分開，先別拿唯一一份相簿試。

## 先預覽，再真的複製

以下示範來源在 `~/Pictures/camera`，整理後放到 `~/Pictures/sorted`。先執行：

```bash
python3 phockup.py ~/Pictures/camera ~/Pictures/sorted --dry-run
```

看輸出的日期路徑是否合理。本次預覽沒有建立目的資料夾，也沒有複製照片。不過它列出「預計複製八張」，正式執行才判斷出兩張重複，因此預覽數量不能直接當作最後檔案數。

確認後，再去掉預覽參數：

```bash
python3 phockup.py ~/Pictures/camera ~/Pictures/sorted
```

![實測整理結果：日期資料夾、同秒照片編號與 unknown](https://blog.valenvan.uk/img/ivandokov-phockup-article_1.png)

本次結果有 `2024/07/13`、`2024/07/14`、`2025/02/01` 三天。兩張同秒但不同內容的照片都留下，檔名分別為 `20240713-100000.jpg` 與 `20240713-100000-2.jpg`。少掉的是兩張內容相同的副本，來源八張仍在；預設操作是複製，本文沒有使用移動模式。

## unknown 不是失敗，也不是幫你猜日期

沒有拍攝日期的 `screenshot.jpg` 留在 `unknown`，檔名保留。整理後要打開這個資料夾確認，不要把它當成可以直接丟掉的垃圾。截圖、轉傳圖片常需要另外判讀；本次只驗證一張無日期 JPEG 的行為。

![原始照片仍有八張，無日期圖片另外保留](https://blog.valenvan.uk/img/ivandokov-phockup-article_2.png)

我的結論是：需要把一批相機匯出照片按日期歸位，Phockup 值得試。想直接點選操作，或希望靠人物、地點自動分類的人，這次測試沒有提供那類功能的證據。第一次先預覽，用少量副本確認結果，完成後也別急著刪原檔。

專案：[ivandokov/phockup](https://github.com/ivandokov/phockup)；授權：[MIT](https://github.com/ivandokov/phockup/blob/8591be3ac6de83a1755e3aa35dd1fddba9e854e0/license)。來源文件與實測日期：2026 年 10 月 31 日（台灣時間）。
