#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ transfer_phone_archive.py ========================= Фоновый перенос данных со смартфона в архив: - Музыка (Music, Audiobooks) ПОЛНОСТЬЮ ИСКЛЮЧЕНА и остаётся нетронутой на телефоне. - Переносятся: Download, футажи, Pictures, DCIM/MyAlbums, DCIM/Camera. """ import os import sys import subprocess import time from pathlib import Path DEST_ROOT = Path("/mnt/data/архив_с_телефона") DEST_ROOT.mkdir(parents=True, exist_ok=True) LOG_FILE = DEST_ROOT / "transfer_log.txt" # ИСКЛЮЧАЕМ Music и Audiobooks по прямому требованию пользователя! FOLDERS_TO_PULL = [ ("Download", "/storage/emulated/0/Download", DEST_ROOT / "Download"), ("футажи", "/storage/emulated/0/футажи", DEST_ROOT / "футажи"), ("Pictures", "/storage/emulated/0/Pictures", DEST_ROOT / "Pictures"), ("DCIM/MyAlbums", "/storage/emulated/0/DCIM/MyAlbums", DEST_ROOT / "DCIM/MyAlbums"), ("DCIM/Camera", "/storage/emulated/0/DCIM/Camera", DEST_ROOT / "DCIM/Camera"), ] def log(msg: str): timestamp = time.strftime("[%Y-%m-%d %H:%M:%S]") line = f"{timestamp} {msg}" print(line, flush=True) with open(LOG_FILE, "a", encoding="utf-8") as f: f.write(line + "\n") def main(): log("=== ПЕРЕНОС ДАННЫХ СО СМАРТФОНА (МУЗЫКА ОСТАЁТСЯ НА ТЕЛЕФОНЕ) ===") start_all = time.time() for idx, (name, src_path, dst_path) in enumerate(FOLDERS_TO_PULL, 1): dst_path.parent.mkdir(parents=True, exist_ok=True) log(f"[{idx}/{len(FOLDERS_TO_PULL)}] Копирование «{name}» ({src_path} -> {dst_path})...") t0 = time.time() cmd = ["adb", "-s", "3aeea825", "pull", src_path, str(dst_path.parent)] try: res = subprocess.run(cmd, capture_output=True, text=True) elapsed = time.time() - t0 if res.returncode == 0: log(f"-> Успешно перенесено «{name}» за {elapsed:.1f} сек.") else: log(f"-> Завершено с предупреждением «{name}» ({elapsed:.1f} сек): {res.stderr.strip()[:200]}") except Exception as e: log(f"-> Ошибка при копировании «{name}»: {e}") total_elapsed = time.time() - start_all log(f"=== ВСЕ ВЫБРАННЫЕ ПАПКИ УСПЕШНО ПЕРЕНЕСЕНЫ за {total_elapsed / 60:.1f} минут! (Музыка осталась на телефоне) ===") if __name__ == "__main__": main()