æ°ä»ããšãã¹ã¯ããããããã¥ã¡ã³ãã«èŠããªããã¡ã€ã«ããããããããšããæ¹ãå€ãã®ã§ã¯ãªãã ããããä»åã¯ãPythonã§ãã¹ã¯ããããšããã¥ã¡ã³ãã®ãã©ã«ããèªåããã¯ã¢ããããããã°ã©ã äœã£ãŠã¿ãããããã¯ã¢ããããŠããã°å®å¿ããŠPCå ã®å€§æé€ãã§ããã
æšãŠãããªã人ã§ãPCãªã倧äžå€«
ãéšå±ã®ä¹±ãã¯å¿ã®ä¹±ãããšèšãããŠãããªããªãæé€ããæ°ã«ãªããªããšãã人ãå€ãã ãããæé€ãèŠæãªäººã®PCã¯ãã¯ããã¡ã€ã«ãä¹±éã«ãªã£ãŠããå°è±¡ããããããããããœã³ã³ã®äžã§ããã°ãã«ãŒã«ãããã£ããæ±ºããŠããŸãã°ãã¹ãããªãšæŽçãã§ããã
ãããããæé€ãèŠæã§éšå±ãæ±ã人ã®å€ããæ±ããåé¡ããæšãŠãããªãããšãã ãç©ã«æº¢ããŠãããªããããã«äžæã«åçŽããããä¹±éãªå°è±¡ãæ®ã£ãŠããŸãããã®ç¹ãPCå ã®ããžã¿ã«ããŒã¿ã¯å®å šãªè€è£œãå¯èœãªã®ã§ãããã¯ã¢ãããããšã£ãŠããŸãã°ãããŸã䜿ããªããã¡ã€ã«ã¯å¿çœ®ããªãPCããæšãŠãããšãã§ããã
ä»åã¯ããã¡ã€ã«æŽçã®å段éãšããŠãPythonã䜿ã£ãŠããœã³ã³ã®ãã¹ã¯ããããšããã¥ã¡ã³ããèªåããã¯ã¢ããããæ¹æ³ã玹ä»ãããã
æåã«ããã¯ã¢ããæŠç¥ã決ããã
çè ãå®è·µããŠããããã¯ã¢ããã®ææ³ã ãã倧容éã¹ãã¬ãŒãžã«ããã¯ã¢ããããæ¥ã®ãã©ã«ã(äŸãã°ã2022-12-19ããšãã2023-01-12ã)ãäœæãããã®é äžã«ãã¹ã¯ããããšããã¥ã¡ã³ããäžžããšã³ããŒãããšããç°¡åãªãã®ã ã
ãšèšãã®ããå¿ èŠãªãã¡ã€ã«ãšäžèŠãªãã¡ã€ã«ãéžå¥ããŠããã¯ã¢ããããã®ã¯æéãããããããã¯ã¢ããã®ãã³ã«éžå¥ãå¿ èŠã ãšãé¢åã§ããã¯ã¢ããã®é »åºŠãèœã¡ãŠããŸãã ããããã®ãããäžèšã®ããã«äžåºŠæ±ºããã«ãŒã«ã«åŸã£ãŠãäœãèããã«ããã¯ã¢ããããã®ãè¯ãã ãããããã宿çã«è¡ãã
-

ããã¯ã¢ããèŠåãæ±ºããã - æã«1床ãã¹ã¯ããããããã¥ã¡ã³ããäžžããšããã¯ã¢ãã
ãªããæè¿ã§ã¯ãHDD/SSDã倧容éåããŠããããšã«å ããŠãã¯ã©ãŠãã¹ãã¬ãŒãžã«ãã¡ã€ã«ãããã¯ã¢ããããããšã容æã ããã®ããããã¡ã€ã«ãéè€ãããšããŠããã³ã¹ããããã»ã©ãããã«ããŒã¿ã®äžžããšããã¯ã¢ãããå¯èœã ã
ãã¡ãããå°çšã®ããã¯ã¢ããããŒã«ãå°å ¥ããããšã§ãéè€ãã¡ã€ã«ãäœãããšãªãä»»æã®ç¶æ ã«æ»ãããšãã§ãããã倧åãªãã¡ã€ã«ãäœéã«ãããã¯ã¢ããããŠããã®ã ãšæãã°æªããªãããŸãã倧容éã¹ãã¬ãŒãžã®äŸ¡æ Œã¯å¹Žã äžãã£ãŠããã®ã§ãä»ã§ã¯ããã»ã©æ°ã«ããããšã¯ãªãã ããã
Pythonã§èªåããã¯ã¢ããããŒã«ãäœãã
ãããŠãã©ãããªããããã¯ã¢ãããå®è¡ããPythonã¹ã¯ãªãããäœã£ãŠãããŠã宿çã«å®è¡ããããã«ãããšè¯ãã ãããæå®ãããã©ã«ãã«å¹Žææ¥ã®ãã©ã«ããäœæãããã¹ã¯ããããšããã¥ã¡ã³ãã«ããå šãã¡ã€ã«ãã³ããŒããããã°ã©ã ã¯æ¬¡ã®ããã«ãªãã
import os, shutil
from pathlib import Path
from datetime import datetime
# ããã¯ã¢ããå
ã®ãã©ã«ããæå®(æžãæããå¿
èŠ) --- (*1)
backup_root_dir = Path(r'D:\\') # Windowsã§Dãã©ã€ãã«ããã¯ã¢ãã
# backup_root_dir = Path(r'/Volumes/Extreme SSD/') # macOSã§å€ä»ãSSDã«
# å¹Žææ¥ã®ãã©ã«ããäœã --- (*2)
ymd = datetime.now().strftime('%Y-%m-%d')
backup_dir = backup_root_dir.joinpath(ymd)
backup_dir.mkdir(parents=True, exist_ok=True)
print('[Backup]', backup_dir)
# ããã¯ã¢ãããå®è¡ãã颿° --- (*3)
def my_backup(name, src, des):
src = Path(src).absolute()
des = Path(des).absolute()
print(f'[{name}] {src}')
copy_ex(src, des, 0)
# ååž°çã«ãã¡ã€ã«ãã³ã㌠--- (*4)
def copy_ex(src, des, level):
try:
if src.is_file():
shutil.copy2(src, des)
# print('-', src)
return
des.mkdir(exist_ok=True)
for f in src.iterdir():
copy_ex(f, des.joinpath(f.name), level+1)
except:
print('[ERROR]', src)
# ãã¹ã¯ãããã®ã³ã㌠--- (*5)
desktop_dir = os.path.expanduser('~/Desktop')
my_backup('Desktop', desktop_dir, backup_dir.joinpath('Desktop'))
# ããã¥ã¡ã³ããã³ã㌠--- (*6)
doc_dir = os.path.expanduser('~/Documents')
my_backup('Documents', doc_dir, backup_dir.joinpath('Documents'))
print('å®äº')
ããã°ã©ã ãå®è¡ããã«ã¯ããŸããäžèšã®ããã°ã©ã ããbackup.pyããšããååã§ä¿åãããããããŠãäžèšããã°ã©ã ã®(ïŒ1)ã«ããã¯ã¢ããå ã®ãã¹ãæå®ããã
ç¶ããŠãPythonã«ä»å±ã®IDLEããäžèšãã¡ã€ã«ãéžãã§å®è¡ãããããããã¯ãã¿ãŒããã«(Windowsã®PowerShellãmacOSã®ã¿ãŒããã«.app)ãèµ·åããŠã以äžã®ã³ãã³ããå®è¡ãããã
# --- Windowsã®å Žå ---
python backup.py
# --- macOSã®å Žå ---
python3 backup.py
ãæ³šæãWindowsã§å®è¡ããå Žåãããã¥ã¡ã³ã以äžã«é ããã©ã«ããMy PicturesããMy MusicããMy Videosããããã³ããŒã§ããªããšãããšã©ãŒãã§ãããã®ãã©ã«ãã¯ã·ã§ãŒãã«ããã§ãããPythonã§æ£ããåŠçã§ããªãã®ã§ç¡èŠããŠãåé¡ãªãã
以äžã¯ããã°ã©ã ãå®è¡ãããšããã ãå®è¡ãããããã¯ã¢ãããæ£ããå®äºããããšã確èªãããããã¡ã€ã«ã®ããŒããã·ã§ã³ãåé¡ã§ã³ããŒã«å€±æããŠããããšãããã®ã§æ³šæãããã
ããã°ã©ã ã確èªããŠã¿ããã(ïŒ1)ã«ã¯ãããã¯ã¢ããå ã®ãã©ã«ããæå®ããã(ïŒ2)ã§ã¯ããã¯ã¢ããå ã«ã幎-æ-æ¥ãã®ãã©ã«ããäœãããããä»åã®ã³ããŒå ãšãªãã
ãããŠã(ïŒ3)以éã§ã¯ããã¯ã¢ãããå®è¡ãã颿°ãå®çŸ©ããããã©ã«ããäžžããšã³ããŒããã«ã¯ãshutil.copytree颿°ãããããäžã€ã§ããšã©ãŒããããšãã®æç¹ã§ã³ããŒã«å€±æããŠããŸããããã§ãååž°çã«ãã¡ã€ã«ãã³ããŒãã颿°ãäœã£ããå®éã«ãã¡ã€ã«ãã³ããŒãã颿°ã(ïŒ4)ã ã
(ïŒ5)ã§ã¯ãã¹ã¯ãããã®ãã¹ãåŸãŠããã©ã«ããã³ããŒããããããŠã(ïŒ6)ã§ã¯ããã¥ã¡ã³ãã®ãã¹ãåŸãŠãã©ã«ããã³ããŒããã
ãªããos.path.expanduserã䜿ããšãã~ãããŠãŒã¶ãŒã®ããŒã ãã£ã¬ã¯ããªã«çœ®æã§ããããšã¯èšãã確å®ã«æ£ç¢ºãªãã¹ãåŸãããèš³ã§ã¯ãªããããã§ããããã¹ã¯ããããããã¥ã¡ã³ãã®ãã¹ãèªèº«ã§å€æŽããŠããå Žåã«ã¯ããã®ãã¹ã倿Žããå¿ èŠãããã
ããã¯ã¢ãããããæãåããã¡ã€ã«ãåé€ããã
ãªããäžèšã®ãããªããã°ã©ã ã䜿ã£ãŠãããŒã¿ãèªåã§ããã¯ã¢ããããããèŠããªããã¡ã€ã«ããã©ã«ããã©ãã©ããŽãç®±ã«æšãŠãŠãããããã¡ã€ã«ãããã¯ã¢ãããããŠããã®ã§ãããã»ã©ãã¡ã€ã«ãå¿ èŠãã©ããã§æ©ãå¿ èŠã¯ãªããæè¿äœ¿ã£ããã©ããã確èªããŠã䜿ã£ãŠããªããã°æ°è»œã«åé€ããããåŸã«ãªã£ãŠå¿ èŠã«ãªã£ããããã¯ã¢ãããæ¢ãã°è¯ãã®ã ã
ãšããã§ãããã¯ã¢ããæŠç¥ã§ç޹ä»ããç»é¢ã§ã¯ãæ1åã®ããã¯ã¢ããããååšããŠããªãã®ã§ããã§å€§äžå€«ããšæã人ãããã ãããã
çè ã¯æ¥ã ã®å·çãããã°ã©ãã³ã°ã®ä»äºã§ã¯Gitãªã©ã®ããŒãžã§ã³ç®¡çããŒã«ãå©çšããŠããããã®ãããã§ããã¹ã¯ããããããã¥ã¡ã³ã(æžé¡)ãã©ã«ããäžžããšããã¯ã¢ããããã®ã¯æã«1床ã§ååã ã
ããããPythonã§èªååããå Žåãä»äºã«å¿ããŠæ¯æ¥ããã¯ã¢ãããããªã©é »åºŠã調æŽãããšè¯ãã ãããæ¯æ¥ããã¯ã¢ããããå Žåã ãšããããã«ã¹ãã¬ãŒãžå®¹éãå¿é ã«ãªãã®ã§ã3ã¶æãã£ãããå€ãããã¯ã¢ãããéåŒããªã©ã«ãŒã«ã決ãããšè¯ãã ããã
ãŸãšã
Pythonãå©çšãããšæ¥ã ã®äœæ¥ãèªååã§ãããããŒã¿ã®ããã¯ã¢ããã¯æ¥åã«ããããã詳现ã«ã³ããŒæ¹æ³ãã«ã¹ã¿ãã€ãºãããå Žé¢ãå€ãããšã ãããPythonã䜿ãã°ããããã§ã现ããã³ããŒæ¹æ³ãæå®ã§ããããã®æ©äŒã«PCã®ããã¯ã¢ããæŠç¥ãèŠçŽããŠã¿ããã
èªç±åããã°ã©ããŒããããã¯ãã©ã«ãŠãããã°ã©ãã³ã°ã®æ¥œãããäŒããæŽ»åãããŠããã代衚äœã«ãæ¥æ¬èªããã°ã©ãã³ã°èšèªããªã§ããã ãããã¹ã鳿¥œããµã¯ã©ããªã©ã2001幎ãªã³ã©ã€ã³ãœãã倧è³å ¥è³ã2004幎床æªèžãŠãŒã¹ ã¹ãŒããŒã¯ãªãšãŒã¿èªå®ã2010幎 OSSè²¢ç®è ç« åè³ãæè¡æžãå€ãå·çããŠãããçŽè¿ã§ã¯ããã·ãŽããã¯ãã©ã PythonèªååŠçã®æç§æž(ãã€ããåºç)ããããã«äœ¿ãã!æ¥åã§å®è·µã§ãã! Pythonã«ããAIã»æ©æ¢°åŠç¿ã»æ·±å±€åŠç¿ã¢ããªã®ã€ããæ¹ TensorFlow2察å¿(ãœã·ã )ãããã³ã¬ã§ãã£ããåŠã¶Python(ãã€ããåºç)ããªã©ã

