Change-8M以æ¥ãç§ã¯åçã奜ãã§ãã ãã®åŸãéææ¥ãŸãã¯åææ¥ã«é·ãæåŸ
ãããïŒéåžžããã¬ã¹ã¯é±æ«ã®å€ã«è¡ãããŸããïŒããã以åã«ã¯ãã£ã«ã ãååŠè¬åãåççšçŽã«éåžžã«é·ãæåŸ
ããããŸããïŒäžè¶³ããã£ãããïŒã ä»ãç§ã¯æé·ãã倧ãããŠæ ãè
ã«ãªããŸããã ç§ã®ç³é¹žç®±ã¯ã»ãšãã©ãã€ãç§ãšäžç·ã«ããŸãïŒããã¯ããã¯ã®äžããç§ã®ãã±ããã®äžã®ã©ããã«ã ç§ã¯èå³ãèµ·ãããããã¹ãŠãæ®åœ±ããŸãã åæã«ã1æ¥ã«1æã®åçãããïŒä»äºããåºãããïŒãäžåºŠã«ããããã®åçããããŸãïŒæå³çã«æ£æ©ã«åºãããïŒã ãããŠãæå³çãªã±ãŒã¹ã§ã¯ã家ã«åž°ã£ããšãã«å¡©ãéžå¥ããå¯èœæ§ãé«ããå€ç«ããã±ãŒã¹ã§ã¯å¿ããŠããŸãããã®åŸãæ°åã®ç°ãªãæ¥ã«æ®åœ±ããåçãéžå¥ããå¿
èŠããããŸãã æè¿ãæå³çã«å€ã«åºãããšã次第ã«å°ãªããªã£ãããã1æã®åçã®æ°ãå¢ããŸããã ãããŠã
æšå¹Žã®èšäºã«è§Šçºããããããã®æ¥ã®ããããã§ãç§ã¯è¶£å³ãç°¡çŽ åããããšã«ããŸããã Linuxã¯ã³ã³ãã¥ãŒã¿ãŒïŒopenSUSE 12.1ïŒã«ã€ã³ã¹ããŒã«ãããŠããããã解決ã§ããªãåé¡ã¯ãªãã¯ãã§ãã ãããŠãç§ã¯ãããèªåèªèº«ãã³ããŒããŠãã©ãã«ã§ãçªãå¿
èŠããªãããšãæã¿ãŸããã ãŸããç§ã¯åœé Linuxoidãªã®ã§ïŒæåãšæåŸã®ã¹ã¯ãªããã¯0x0C幎åã®3幎ç®ã«ãããŸããïŒãããã«ããŸããããªãã£ããšèšããŸãã
ã2009.05.20 Night Peterããã2011.08.20 Lavna Fallsããã2012.07.24 Dusya is sleepingããã®åçã1æããå Žåã§ããåçã1ãæã«ä¿ç®¡ããŸãã å°ãªããšããã1ã¬ãã«-1幎ã¯å¿
èŠã ãããŸã èããããšãã§ãããšããèãããã§ã«æ¥ãŠããŸãã ç§ã®åçïŒéåæ
è¡ã®å ŽåïŒ-ããã¯ç§ã«ãšã£ãŠéèŠã§ã¯ãããŸããããã¹ãŠãã€ãã³ãã®åãã«ã¿ãã°ã«ãããŸãã å¿
èŠã«å¿ããŠããã³ã§åçãèŠã€ããŸãã
èªå䞊ã¹æ¿ããè¡ãã«ã¯ãç®çã®ã¡ã¢ãªã«ãŒããæ¥ç¶ããç¬éã远跡ããŠã䞊ã¹æ¿ãã¹ã¯ãªãããå®è¡ããå¿
èŠããããŸãã Linuxã§ã¯ãudevããŒã¢ã³ãããŒããŠã§ã¢ãæ
åœããŸãã ãããã£ãŠãæåã«ããã®åŠçæ¹æ³ãåŠç¿ããŸãã
udev
udevã¯ããŒããŠã§ã¢ãç£èŠããããã€ã¹ããšã«/ devãã£ã¬ã¯ããªã«ç¬èªã®ããŒããäœæããŸãã ããã¯äŸ¿å©ã§ãããããããªãã¥ã¢ã³ã¹ããããŸããåãã¯ã©ã¹ã®ããã€ã¹ã«ã¯ãæ¥ç¶ãããŠããé åºã«å¿ããŠé çªã«ååãä»ããããŸãã ãããã£ãŠãæåã®ãªãã·ã§ã³-å¿
èŠã«å¿ããŠãã¹ãŠãã³ããŒããã¹ã¯ãªããã®ãã¿ã³ãæŒã-ã¯é©åããŸããïŒä»ã®ãã©ã€ããæ¥ç¶ãããŠããããšã¯ããããŸããããç¹å®ã®ãã©ã€ãã远跡ããã«ã¯ã¹ã¯ãªãããè€éã«ããå¿
èŠããããã«ãŒããæ¥ç¶ããåŸã«ã©ããã§åãåããããããŸããã§ããïŒ ã ãã ããç¹å®ã®ãã©ã€ããç®çã®ãã€ã³ãã«ããŠã³ããããããã«æ§æããããšãã§ããŸã-ããã¯é©åã§ãããååã§ã¯ãããŸããã ãã®æ倧ã®ãã©ã¹ïŒãã£ã«ã¿ãŒã«é©ããããã€ãã®ã€ãã³ãã®ããã®ä»»æã®ã¹ã¯ãªããã®èµ·åã æåã«ãã¡ã¢ãªã«ãŒããã«ãŒããªãŒããŒã«æ¿å
¥ããããšãäžæã«å€æããããã«ãã©ã®å±æ§ãšã€ãã³ããã¢ã¿ããã§ããããèŠãŠã¿ãŸãããã ãã®ã»ã¯ã·ã§ã³ã®æçµç®æšã¯ãã«ãŒããªãŒããŒudevã«ãŒã«ãã¡ã€ã«ã§ãã
ããã€ã¹ã®ç¹æ§ã衚瀺ããã«ã¯ãudevadmããã°ã©ã ã䜿çšã§ããŸãã ãããã圌女ã«ã¯ããã€ã¹åãå¿
èŠã§ãã ãããã£ãŠãæåã«ã«ãŒããªãŒããŒã§ãã£ã¹ã¯ã®ååã確èªããå¿
èŠããããŸãã æãç°¡åãªæ¹æ³ã䜿çšããŸãã æåã«ãã·ã¹ãã ã«ãã§ã«ãããã©ã€ãã確èªããŸãã
>ls -1 /dev/sd* /dev/sda /dev/sda1 /dev/sdb /dev/sdb1 /dev/sdc /dev/sdc1 /dev/sdd /dev/sdd1 /dev/sde /dev/sde1 /dev/sdf /dev/sdg /dev/sdh /dev/sdi
ã«ãŒãããªãŒããŒã«æ¿å
¥ããŠãã³ãã³ããç¹°ãè¿ããŸãã
>ls -1 /dev/sd* /dev/sda /dev/sda1 /dev/sdb /dev/sdb1 /dev/sdc /dev/sdc1 /dev/sdd /dev/sdd1 /dev/sde /dev/sde1 /dev/sdf /dev/sdg /dev/sdh /dev/sdh1 /dev/sdi
æ¿å
¥ãããã«ãŒãã¯ãåå/ dev / sdh1ã®äžã«é ããŠããããšãããããŸãã ç§å¯ãšããŠãæåŸã®4ã€ã®ãã£ã¹ã¯ïŒsdfãsdgãsdhãsdiïŒã¯ãã¹ãŠã«ãŒããªãŒããŒã§ãããã¡ã¢ãªã«ãŒãããªããŠããªãŒããŒãã³ã³ãã¥ãŒã¿ãŒã«æ¥ç¶ããååŸã«åãã³ãã³ããå®è¡ããããšã§ãã£ã¹ã¯ãå€å¥ã§ããŸãåŸã§èª¬æããæ¹æ³ã§åœŒããã§ã«ããªã¥ãŒã åã決å®ãããšãã«æ¥ãŸããïŒã
次ã«ããã®ã«ãŒããªãŒããŒãšã«ãŒãã®ç¹æ§ãèŠãŠã¿ãŸãããã ãªãŒããŒå
ã®ã«ãŒãã®å€èŠ³ã®äºå®ã®å€ããå°ãªããæçœãªæ±ºå®ã«åºå·ããããšãå¯èœãªãã®ãèŠã€ããããšãå¿
èŠã§ãã ããã§ã¯ã圌ã®ãã£ã¹ã¯åãå¿
èŠã«ãªããŸãã ãã®ã³ãã³ãã¯ãæå®ãããååããã«ãŒããŸã§ã®ãã¹ãŠã®ããã€ã¹ã®å±æ§ããudevã®ãããªåœ¢åŒã§ãªã¹ãããŸãã
Udevadmã®åºå >udevadm info -a -n /dev/sdh1 Udevadm info starts with the device specified by the devpath and then walks up the chain of parent devices. It prints for every device found, all possible attributes in the udev rules key format. A rule to match, can be composed by the attributes of the device and the attributes from one single parent device. looking at device '/devices/pci0000:00/0000:00:02.1/usb1/1-1/1-1:1.0/host10/target10:0:0/10:0:0:2/block/sdh/sdh1': KERNEL=="sdh1" SUBSYSTEM=="block" DRIVER=="" ATTR{partition}=="1" ATTR{start}=="2048" ATTR{size}=="153600" ATTR{ro}=="0" ATTR{alignment_offset}=="0" ATTR{discard_alignment}=="0" ATTR{stat}==" 146 4 738 319 0 0 0 0 0 319 319" ATTR{inflight}==" 0 0" looking at parent device '/devices/pci0000:00/0000:00:02.1/usb1/1-1/1-1:1.0/host10/target10:0:0/10:0:0:2/block/sdh': KERNELS=="sdh" SUBSYSTEMS=="block" DRIVERS=="" ATTRS{range}=="16" ATTRS{ext_range}=="256" ATTRS{removable}=="1" ATTRS{ro}=="0" ATTRS{size}=="7745536" ATTRS{alignment_offset}=="0" ATTRS{discard_alignment}=="0" ATTRS{capability}=="51" ATTRS{stat}==" 1352 1239 73856 8882 4 18 22 735 0 3608 9615" ATTRS{inflight}==" 0 0" ATTRS{events}=="media_change" ATTRS{events_async}=="" ATTRS{events_poll_msecs}=="-1" looking at parent device '/devices/pci0000:00/0000:00:02.1/usb1/1-1/1-1:1.0/host14/target14:0:0/14:0:0:2': KERNELS=="14:0:0:2" SUBSYSTEMS=="scsi" DRIVERS=="sd" ATTRS{device_blocked}=="0" ATTRS{type}=="0" ATTRS{scsi_level}=="0" ATTRS{vendor}=="Generic-" ATTRS{model}=="SD/MMC " ATTRS{rev}=="1.00" ATTRS{state}=="running" ATTRS{timeout}=="30" ATTRS{iocounterbits}=="32" ATTRS{iorequest_cnt}=="0x220" ATTRS{iodone_cnt}=="0x220" ATTRS{ioerr_cnt}=="0x21f" ATTRS{evt_media_change}=="0" ATTRS{queue_depth}=="1" ATTRS{queue_type}=="none" ATTRS{max_sectors}=="240" looking at parent device '/devices/pci0000:00/0000:00:02.1/usb1/1-1/1-1:1.0/host14/target14:0:0': KERNELS=="target14:0:0" SUBSYSTEMS=="scsi" DRIVERS=="" looking at parent device '/devices/pci0000:00/0000:00:02.1/usb1/1-1/1-1:1.0/host14': KERNELS=="host14" SUBSYSTEMS=="scsi" DRIVERS=="" looking at parent device '/devices/pci0000:00/0000:00:02.1/usb1/1-1/1-1:1.0': KERNELS=="1-1:1.0" SUBSYSTEMS=="usb" DRIVERS=="usb-storage" ATTRS{bInterfaceNumber}=="00" ATTRS{bAlternateSetting}==" 0" ATTRS{bNumEndpoints}=="02" ATTRS{bInterfaceClass}=="08" ATTRS{bInterfaceSubClass}=="06" ATTRS{bInterfaceProtocol}=="50" ATTRS{supports_autosuspend}=="1" ATTRS{interface}=="Bulk-In, Bulk-Out, Interface" looking at parent device '/devices/pci0000:00/0000:00:02.1/usb1/1-1': KERNELS=="1-1" SUBSYSTEMS=="usb" DRIVERS=="usb" ATTRS{configuration}=="CARD READER" ATTRS{bNumInterfaces}==" 1" ATTRS{bConfigurationValue}=="1" ATTRS{bmAttributes}=="80" ATTRS{bMaxPower}=="500mA" ATTRS{urbnum}=="10885" ATTRS{idVendor}=="0bda" ATTRS{idProduct}=="0151" ATTRS{bcdDevice}=="5195" ATTRS{bDeviceClass}=="00" ATTRS{bDeviceSubClass}=="00" ATTRS{bDeviceProtocol}=="00" ATTRS{bNumConfigurations}=="1" ATTRS{bMaxPacketSize0}=="64" ATTRS{speed}=="480" ATTRS{busnum}=="1" ATTRS{devnum}=="15" ATTRS{devpath}=="1" ATTRS{version}==" 2.00" ATTRS{maxchild}=="0" ATTRS{quirks}=="0x0" ATTRS{avoid_reset_quirk}=="0" ATTRS{authorized}=="1" ATTRS{manufacturer}=="Generic" ATTRS{product}=="USB2.0-CRW" ATTRS{serial}=="20060413092100000" looking at parent device '/devices/pci0000:00/0000:00:02.1/usb1': KERNELS=="usb1" SUBSYSTEMS=="usb" DRIVERS=="usb" ATTRS{configuration}=="" ATTRS{bNumInterfaces}==" 1" ATTRS{bConfigurationValue}=="1" ATTRS{bmAttributes}=="e0" ATTRS{bMaxPower}==" 0mA" ATTRS{urbnum}=="222" ATTRS{idVendor}=="1d6b" ATTRS{idProduct}=="0002" ATTRS{bcdDevice}=="0301" ATTRS{bDeviceClass}=="09" ATTRS{bDeviceSubClass}=="00" ATTRS{bDeviceProtocol}=="00" ATTRS{bNumConfigurations}=="1" ATTRS{bMaxPacketSize0}=="64" ATTRS{speed}=="480" ATTRS{busnum}=="1" ATTRS{devnum}=="1" ATTRS{devpath}=="0" ATTRS{version}==" 2.00" ATTRS{maxchild}=="6" ATTRS{quirks}=="0x0" ATTRS{avoid_reset_quirk}=="0" ATTRS{authorized}=="1" ATTRS{manufacturer}=="Linux 3.1.10-1.16-desktop ehci_hcd" ATTRS{product}=="EHCI Host Controller" ATTRS{serial}=="0000:00:02.1" ATTRS{authorized_default}=="1" looking at parent device '/devices/pci0000:00/0000:00:02.1': KERNELS=="0000:00:02.1" SUBSYSTEMS=="pci" DRIVERS=="ehci_hcd" ATTRS{vendor}=="0x10de" ATTRS{device}=="0x077c" ATTRS{subsystem_vendor}=="0x1043" ATTRS{subsystem_device}=="0x82e7" ATTRS{class}=="0x0c0320" ATTRS{irq}=="22" ATTRS{local_cpus}=="00000000,00000000,00000000,0000000f" ATTRS{local_cpulist}=="0-3" ATTRS{numa_node}=="0" ATTRS{dma_mask_bits}=="32" ATTRS{consistent_dma_mask_bits}=="32" ATTRS{enable}=="1" ATTRS{broken_parity_status}=="0" ATTRS{msi_bus}=="" ATTRS{companion}=="" ATTRS{uframe_periodic_max}=="100" looking at parent device '/devices/pci0000:00': KERNELS=="pci0000:00" SUBSYSTEMS=="" DRIVERS==""
ã¡ã¢ã«æžãããŠããããã«ãããã€ã¹èªäœã®ããããã£ãšèŠªããã€ã¹ã®ããããã®ããããã£ã䜿çšããŠãã«ãŒã«ãäœæã§ããŸãã
ã¡ã¢ãªã«ãŒãã®æåã®ã»ã¯ã·ã§ã³ãæ¥ç¶ããããã®ã«ãŒã«ãèšè¿°ããŸãïŒããŒãã£ã·ã§ã³ãäœæããã«ã«ãŒããããã«åæããããã«ãããããŸããã§ããããŸããã«ã¡ã©ã¯æåã®ã»ã¯ã·ã§ã³ã®ã¿ã«æžã蟌ã¿ãŸãïŒã sdh1ããªã¥ãŒã èªäœã«ã¯ãå€ãã®åºæã®ããããã£ããããŸããã ããã§ãããããããã€ã¹åKERNEL == "sdh1"ããã³ãã®ããã€ã¹ã®ãµãã·ã¹ãã SUBSYSTEM == "block"ã ãã ãããã©ãã·ã¥ãã©ã€ãã«ã¯ãã®ãããªããããã£ããããŸãã ãããŠãå
ã»ã©èšã£ãããã«ã次ã«ã·ã¹ãã ãããªã¥ãŒã sdh1ãåŒã³åºãã®ã¯äºå®ã§ã¯ãªããçªç¶xD-PictureãŸãã¯CompactFlashãåããå¥ã®ã«ã¡ã©ã賌å
¥ããŸãïŒãããã¯sdfãsdgãsdiã«ãªããŸãïŒ-ããããªããã®ã«ãŒã«ãæžãçŽããŠãã ããã 幞ããªããšã«ãudevã¯ãžã§ãŒã«ãŒããµããŒãããŠãããããã«ãŒã«ã®ãã®éšåã§ã¯ãKERNEL ==â sdïŒ1âïŒãŸãã¯â sd *âïŒãšããè¡šçŸã䜿çšããŸããããã¯ããããããããã©ã€ãã®æåã®ããªã¥ãŒã ãæå³ããã©ã®ç¹å®ã®æåã®äžã«ãããã瀺ããŸã-ããŸããéèŠãªã®ã¯ãã¹ã¯ãªããããžã§ãŒã«ãŒãªãã§ååãå®å
šã«ååŸããããšã§ãã
次ã®ããã€ã¹ã«ç§»ããŸãããã /devices/pci0000:00/0000:00:02.1/usb1/1-1/1/1-1:1.0/host14/target14pg_/14code_:2/block/sdhã¯æ°ãããèšæ¶ã«æ®ãã§ãããã ãATTRS {events} == "media_change"ã®ã¿ã§ããããã®å Žåããã©ãã·ã¥ãã©ã€ãã«ã¯ãã®å±æ§ããããŸãã
次ã®ããã€ã¹ã¯/devices/pci0000:00/0000:00:02.1/usb1/1-1/1-1-1:1.0/host14/target14pg_/14_node::2ã§ãããããã¯ATTRS { model} ==â SD / MMCâã§ããããã®å±æ§ã«ã¢ã¿ãããããšãSDã«ãŒãã«ã®ã¿å¿çããã¡ã¢ãªã«ãŒãã®ãã®ä»ã®å¯èœãªãªãã·ã§ã³ã¯ç¡èŠãããŸãã 次ã®3ã€ã®ããã€ã¹ã§ã¯ãåã³èå³æ·±ããã®ã¯èŠã€ãããŸããã 次ã®ããã€ã¹/devices/pci0000:00/0000:00:02.1/usb1/1-1ã¯ãã§ã«èå³æ·±ããã®ã§ãã
SUBSYSTEMS=="usb" DRIVERS=="usb" ATTRS{configuration}=="CARD READER" ATTRS{idVendor}=="0bda" ATTRS{idProduct}=="0151" ATTRS{product}=="USB2.0-CRW" ATTRS{serial}=="20060413092100000"
å±æ§ããå€æãããšãããã¯ã«ãŒããªãŒããŒèªäœã§ãããå¿
èŠã§ãïŒæ®ãã®ããã€ã¹ã¯æ¢ã«USBãã¹ã«é¢é£ããŠããŸãïŒã å
šäœãšããŠãéä¿¡ã«ãŒã«ã§ã¯ãã«ãŒããªãŒããŒã®å±æ§ãšã¡ã¢ãªã«ãŒãã®æåã®ããªã¥ãŒã ã«äŸåããŸãã
ACTION=="add", KERNEL=="sd?1", SUBSYSTEMS=="usb", ATTRS{configuration}=="CARD READER", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="0151"
ãããŠãããã€ã¹ãè¿œå ããå¥ã®ã€ãã³ãïŒACTION == "add"ïŒãæ¿å
¥ããŸããã ã«ãŒãããªãŒããŒããåãå€ãããåŸã®ã³ããŒã¯ãçŽç²ã«ç©ççã«äžå¯èœã§ãã
ç§ã¯æã£ãïŒãŸã ATTRå±æ§{ro} ==â 0âããããŸã-ã«ãŒã«ã«è¿œå ããããšãã§ããŸããããã§ãªãå Žåããã£ã¹ã¯ãæžã蟌ã¿ä¿è·ãããŠããå Žåãäœã移åã§ããŸããïŒãã ããã³ããŒããããšã¯å¯èœã§ããããããã«æ£åšããŠããå¯èœæ§ããããŸãïŒã«ã¡ã©ã®ãã¡ã€ã«ã¿ã€ãåãã³ãã¬ãŒãã«å¿ããŠäœåãªãã£ã¬ã¯ããªããããŸãïŒããç§ã¯ãŸã èªåã§è¡ããŸããããããããæ°ã¥ãã§ãããããããŒATTR / KERNEL / SUBSYSTEM / DRIVERã¯ããã€ã¹èªäœã«äœ¿çšããããã®èŠªã«ã¯ãã§ã«æ«å°Ÿã«Sãšããæåãä»ããŠããŸãïŒATTRS / KERNELS / SUBSYSTEMS / DRIVERSã
microSDã«ãŒãçšã®ãªãŒããŒããã1ã€ãããããæ§æã«ç©ºã®è¡ããããidVendorãšidProductã«ãã£ãŠã®ã¿ãã€ã³ãã§ããŸãã udevã«ãŒã«ãã¡ã€ã«ã®ä»¥åã®ããŒãžã§ã³ã®1ã€ïŒ8æäžæ¬ã«ã¹ã¯ãªããã®èšè¿°ãéå§ãã10æãŸã§ã·ã¹ãã ãæŽæ°ããããã®ééã®ã©ããã«ãã®å±æ§ãè¿œå ãããäžè¬çã«ãã®ãªãŒããŒã®å€ãã®å±æ§ãå€æŽãããŸããïŒãã³ããŒãšããã€ã¹ã®å±æ§ã䜿çšãããŸããããçŸåšã¯ç¹å¥ãªå¿
èŠã¯ãããŸããããïŒæ¶ãããšãã«ãããã«å€æŽãããŠããŸãïŒã ãã®ãã£ã«ã¿ãŒãªãã·ã§ã³ã§ã¯ãã«ãŒããªãŒããŒã®ãã®ã¢ãã«ã§ã®ã¿æ©èœããä»ã®ã¢ãã«ãæ¥ç¶ããŠãå¹æã¯ãããŸããã
ãã£ã«ã¿ãå®çŸ©ããŸãããããŸã ã¢ã¯ã·ã§ã³ãå²ãåœãŠãŠããŸããã ãªããªã ç¹å®ã®ã¹ã¯ãªãããå®è¡ããå¿
èŠãããå Žåã¯ããã£ã«ã¿ãŒã«ã¢ã¯ã·ã§ã³ãè¿œå ããŸãã
RUN+="/root/bin/PhotoSort.sh %k"
ã¹ã¯ãªãããã©ã¡ãŒã¿ã®ïŒ
k-ã·ã¹ãã ã«ãã£ãŠçæãããããªã¥ãŒã ã®ååïŒãã£ã¹ã¯ã®KERNELããŒã«è¡šç€ºããããã®ã¯sdh1ã§ãïŒã /root/bin/PhotoSort.shã¯ãå°æ¥ã®ã¹ã¯ãªããã®ååã§ãã
udevã®æçµçãªã«ãŒã«ãã¡ã€ã«ã¯æ¬¡ã®ããã«ãªããŸãã
>cat /etc/udev/rules.d/99-lumix.rules
ããã§ããã®ããã¹ãã/etc/udev/rules.d/ãã£ã¬ã¯ããªïŒã«ãŒãæš©éãå¿
èŠïŒã«ä»»æã®ååã§ä¿åããŸãïŒ99-lumix.rulesããããŸãïŒã udevããŒã¢ã³ã¯ãæ¡ä»¶ã«äžèŽãããã£ã«ã¿ãŒãèŠã€ãããŸã§ããã®ãã£ã¬ã¯ããªããã®ãã¡ã€ã«ãã¢ã«ãã¡ãããé ã«åŠçããŸãã é©åãªã«ãŒã«ãèŠã€ããåŸããã¡ã€ã«ã®ãã以äžã®åŠçã¯å®è¡ãããŸããã ãããã£ãŠãã«ãŒã«ã®æ°ã¯å°ããèšå®ã§ããããæ©ãåŠçãããä»ã®ã«ãŒã«ã«ãã£ãŠãããã¯ãããŸããã
æ¥ç¶ãããŠãããã¹ãŠã®ãã©ãã·ã¥ãã©ã€ããšã«ãŒãã远跡ããå Žåã¯ããªãŒããŒèªäœã®1ã¬ãã«äžã«åŸããSUBSYSTEMS ==â usbâãDRIVERS ==â usb-storageâã«ããã¿ã€ãããšãã§ããŸãã ããããä»ã®ãšãããèªè
ã«åŸãã ãã§ã-æ®ãã®å¿
èŠã¯ãããŸããã§ããã
ããã·ã¥
ãããŠä»ãç§ãã¡ã¯æ¥ç¶ãããã«ãŒãããåçããœãŒãããã¹ã¯ãªãããæžããŠããŸãã å
ã®ããŒãžã§ã³ã§ã¯ããã£ã¹ã¯å
šäœã®ãœãŒãã®ã¿ããµããŒããããŠããŸããã éçšäžã«ãæ¢åã®ãã£ã¬ã¯ããªïŒèç©ãããæªãœãŒãïŒãåŠçãããã£ãã®ã§ãå°ãå€æŽããŠè¿œå ããå¿
èŠããããŸããã ããã§ã¯ããã£ã¹ã¯ãšãã£ã¬ã¯ããªã®äž¡æ¹ããã¡ãã£ã¢ãã¡ã€ã«ïŒã¡ãã£ã¢ãã¡ã€ã«ã®æ¡åŒµåã¯ã¹ã¯ãªããã®findã³ãã³ããã©ã¡ãŒã¿ãŒã§æå®ãããŸãïŒã䞊ã¹æ¿ããããšãã§ãã2çªç®ã®ããŒãžã§ã³ãæ€èšããŸãã
ãŸãããã®ã¹ã¯ãªããã®ã¢ã«ãŽãªãºã ã«ã€ããŠç°¡åã«èª¬æããŸãã åŠçãããã®ïŒããªã¥ãŒã ãŸãã¯ãã£ã¬ã¯ããªïŒã決å®ããŸãã ããªã¥ãŒã ã®å Žåã¯ãæåã«ããŠã³ãããå¿
èŠãããïŒããŠã³ããã€ã³ããæ¢ã«ååŸãããŠããããã®ã¹ã¯ãªããã§ã®ã¿äœ¿çšãããŠããå Žåãã¹ã¯ãªããã¯äœæ¥ãå®äºããŸãïŒãæåŸã«ã¢ã³ããŠã³ãããããšãå¿ããªãã§ãã ããã ããŠã³ãåŸããã®ã«ãŒãã®èšå®ãä¿åãããŠããé ã.PhotoSortãã¡ã€ã«ã®ååšã確èªãããŸãã ãã®äžåšã¯ãéåžžã®ã«ãŒããæ¿å
¥ãããããšã瀺ãä¿¡å·ãšããŠæ©èœããäœãããå¿
èŠã¯ãããŸããã ãã®ãã¡ã€ã«ã§ã¯ããã£ã¹ã¯ã®ååïŒãã®ã³ã°ã®ã¿ã«å¿
èŠ-æåŸã®èª¬æïŒãšãæšæºãé©åããªãå Žåã¯ãã¡ã€ã«ãä¿åãããã£ã¬ã¯ããªãæå®ã§ããŸãïŒæºåž¯é»è©±çšã«å¥ã®ã¹ãã¬ãŒãžãäœæããããšãèããŸããïŒã ãšã¯ã¹ããŒããã£ã¬ã¯ããªã¯ãã³ãã³ãã©ã€ã³ãŸãã¯udevã«ãŒã«ãã¡ã€ã«ã§ã¹ã¯ãªããã®2çªç®ã®ãã©ã¡ãŒã¿ãŒãšããŠæå®ããããšãã§ããŸãã
次ã«ãæå®ããããã£ã¬ã¯ããªãšãµããã£ã¬ã¯ããªã®ãã¹ãŠã®ã¡ãã£ã¢ãã¡ã€ã«ïŒã«ã¡ã©ã以åã¯ç¥ããªãã£ãç°ãªããã£ã¬ã¯ããªã«åçãä¿åããããïŒã¯ãäœæãããæéã§ãœãŒãããå¿
èŠããããŸãã èœãšãç©ŽããããŸãïŒLinuxã§ã¯ããã¡ã€ã«ãäœæãããæéãªã©ã¯ãããŸãããããã¡ã€ã«ãžã®æåŸã®ã¢ã¯ã»ã¹ã®æéãããããŸããããŸããç»åãæäœãããšãã«æŽæ°ããããããä¿¡é Œããããšã¯ã§ããŸããã ãã¡ã€ã«åãäžå¯èœã§ãã02.05ã§äœæãããDSC08655.JPGã¯ã29.04ããMOV08554.MPGã®åŸã«ç¶ãã19.04ããP1170007.JPGã®åŸã«åŠçãããŸãã ãã®åé¡ã¯ã1ã€ã®ã€ãã³ãïŒå¥åãããŒãã£ãŒãïŒãæ®åœ±ããããŸããŸãªã¡ãŒã«ãŒã®è€æ°ã®ã«ã¡ã©ãããå Žåã«ç¹ã«æ·±å»ã§ãã EXIFã¯ç§ãã¡ã®å©ãã«ãªããŸã-ç¹ã«ãDateTimeOriginalå±æ§ãšCreateDateå±æ§ããããŸãïŒãããã®éã«ããã€ãã®éãããããŸãïŒå°ãªããšããããªãã¡ã€ã«ã«ã¯æåã®ãã¡ã€ã«ããªããäœããã®çç±ã§èªã¿åãããªãã£ãå Žåã2çªç®ã®ãã¡ã€ã«ãèªã¿åãããŸãïŒéåžžã®ç¶æ³ã§ã®å±æ§ã¯å€æŽãããŸããã ããããç¹å®ã®ãã£ã¬ã¯ããªããéå§ãããããã®å±æ§ã§ãœãŒãããããã¹ãŠã®ãã¹ãããããã£ã¬ã¯ããªãããã¡ã€ã«ãèªã¿åãæ¹æ³ãããããªãããããã¹ãŠã®ãã¡ã€ã«ã®ååãã«ãŒãã§å€æŽãããŸãïŒexiftoolèªäœããããè¡ãããšãã§ããŸããããã°çšã®ã«ãŒããæ®ããŸããïŒãã¹ãããã·ã§ãããŸãã¯ãããªãäœæããæéãè¿œå ããŸãååã§ïŒåŸã§ãã¡ã€ã«åã§æç³»åã«äžŠã¹æ¿ããããšãã§ããããã«ïŒã
2çªç®ã®ãµã€ã¯ã«ã§ã¯ããã¡ã€ã«ããã£ã¬ã¯ããªã«é
åžããŸããçŸåšã®ãã¡ã€ã«ãšåã®ãã¡ã€ã«ãšã®åºåãã5æéïŒ5 * 60 * 60ïŒãè¶
ãããšãæ°ãããã£ã¬ã¯ããªãäœæãããŸãããããããã¡ã€ã«ãæç³»åã§äžŠã¹æ¿ããçç±ã§ãã 5æã¯å€©äºããã®æ°åã§ãã ããã€ãã³ãã®åçããªãã£ãã®ã§ãã·ã§ããã®ééããã®æéãããé·ããªããŸããã POIéã®é·ãæ
çšã§å°æ
è¡ããããŸããããéè·¯ã¯5æéãããããããããã以äžã§ããã°ããã§ã«å¥ã®éœåžã§ããã å¥ã®æ¥ã«ééããçµå©åŒãäŒæ¥ããããæ¥ä»ã¯å€ãããŸããããã€ãã³ãã¯åããŸãŸã§ããã ãããã£ãŠãå°ããªãã¬ãŒã¯ã¯åã®ãã¡ã€ã«ãšåããã£ã¬ã¯ããªã«ä¿åãããŸãã ãã£ã¬ã¯ããªåã¯YYYYMMDD_HHãšããŠèšå®ãããŸã-ã¯ããã¯ïŒæ°ããã€ãã³ãã®æåã®ãã¡ã€ã«ããååŸïŒã¯ãåãæ¥ã®2ã€ã®ã€ãã³ãã®ããã«ãã£ã¬ã¯ããªåã«è¿œå ãããŸããããã§ãªãå Žåã2æ¥ç®ã«è¡ããšåããã£ã¬ã¯ããªåãååŸããŸãããäœæã¯å€±æããŸãããããã«ä¿åãããŸããã¡ã€ã«ã¯åããã£ã¬ã¯ããªã«å®è£
ãããŸãã
çºçãããã¹ãŠããã°ã«æžã蟌ãŸããŸãïŒãããã¹ã¯ãªããã®æ©èœã確èªããæ¹æ³ã§ãïŒããŸãããã¡ã€ã«ããã£ã¹ã¯ã«æ»ãã³ãã³ãïŒãããã°ã«åœ¹ç«ã¡ãŸãã-ãã¡ã€ã«ã®äžéšãå®è¡ãããã¹ãã¡ãã£ã¢ãã¡ã€ã«ãå€ãååã§ãããã«æ»ããŸããïŒã è¿œå ã®åŠçïŒå転ãçž®å°ã眲åïŒ-ç§ã¯äœ¿çšããŸããããšã«ãããããããèŠãŠãåé€ããŠããã¹ãŠãå®è¡ã§ããŸãïŒåçã«çœ²åãââä»ããŸããïŒã ãããå®è¡ã§ããå Žæã¯ãã¹ã¯ãªããããã¹ãã®ã³ã¡ã³ãã§ç€ºãããŸãã
ã¹ã¯ãªããèªäœïŒ >cat /root/bin/PhotoSort.sh
ããã€ãã®ãã€ã³ãã®èª¬æïŒexiftoolã¯ãDate / Time OriginalïŒ2011ïŒ07ïŒ30 15:35:52ããšãã圢åŒã®æååãè¿ããŸãããã®æååã¯ã20110730153552ãã«å€æããå¿
èŠããããŸãïŒæ³šïŒã€ã³ã¿ãŒãããã¯åºåãæåãã³ãã³ã§ã¯ãªãåçŽã®äŸã§ãã£ã±ãã§ãæ©èœ-ããªããæã£ãŠãããã®ãåç
§ããŠãã ããïŒïŒ curfiletime=$(exiftool -DateTimeOriginal "$file" | cut -d: -f2- | sed 's/[:\ ]//g')
cut-æåã®ã³ãã³ä»¥éããã¹ãŠã«ããããŸããsedã¯ãçµæã®æååãããã¹ãŠã®ã¹ããŒã¹ãšã³ãã³ãåé€ããŸããsedããå®è¡ã§ããªããšç¢ºä¿¡ããŠããŸãããRegExpã¯ããŸããã¬ã³ããªãŒã§ã¯ãããŸããã curfiletime=$(exiftool -DateTimeOriginal "$file" | sed -r 's/^.+: ([0-9]+):([0-9]+):([0-9]+) ([0-9]+):([0-9]+):([0-9]+)/\1-\2-\3 \4:\5:\6/g')
åãè¡ãã2011-07-30 15:35:52ãã«å€æããŸããç¹°ãè¿ããŸããããããããããšã¬ã¬ã³ããªãœãªã¥ãŒã·ã§ã³ãååšããŸããããã¯ãæ¥ä»ãæ¥ä»ãšããŠåŠçã§ããããã«ããããã§ãïŒä»»æã®åœ¢åŒã§ã¯ãæååãæ¿å
¥ããããšã¯ã§ããŸããïŒã䜿çšãã
ã¹ã¯ãªããã¯ãæå®ããããã£ã¬ã¯ããªãšãã®äžã«å«ãŸãããã¹ãŠïŒã¡ã¢ãªã«ãŒãã®å Žåã¯ãã®ã«ãŒãã§ããããã¹ãŠãããæ·±ãïŒã1ã€ãšããŠåŠçããŸãã ./PhotoSort.sh sdh1
ãããã£ãŠãsdh1ãã©ã€ãããœãŒãããããã«ãã¹ã¯ãªãããudevããåŒã³åºãããŸãããã®å Žåãã«ãŒãã«èšå®ããããã¡ã€ã«ããã§ãã¯ãããŸãããã£ã¹ã¯ã¯ç§ãã¡ã«äžããããããŸãã¯ãã£ã¬ã¯ããªã¯æåã®æåã«ãã£ãŠæ±ºå®ãããŸãïŒã/ orã®å Žåã -ãã£ã¬ã¯ããªãæå³ããããã§ãªãå Žåã¯ãã£ã¹ã¯ãæå³ããŸãã ./PhotoSort.sh ~/AllFromParty
ãããŠãã/ AllFromPartyïŒèªåãå«ãïŒã§å²ãŸãããã¹ãŠã®ãã£ã¬ã¯ããªãããã¹ãŠã®åçãšãããªãã¡ã€ã«ããœãŒãã§ããŸãããã¹ãŠã¯ãã¹ã¯ãªããã§æå®ãããããã©ã«ããã£ã¬ã¯ããªã«ä¿åãããŸãïŒphoto = "/ mnt / temp / Photo"ïŒããœãŒã¹ãã£ã¬ã¯ããªã«è€æ°ã®ã«ã¡ã©ããã®ãã¡ã€ã«ãå«ãŸããŠããå Žåãã«ã¡ã©éã®æéãåæãããŠããªãããèšå®ãããŠããªãããã«ããã¡ã€ã«åã«ççŸãããå¯èœæ§ããããŸããããã¯ãç°ãªãã«ã¡ã©ããç°ãªããã£ã¬ã¯ããªãžã®ãã¡ã€ã«ã®é
åžãåŒãèµ·ããå¯èœæ§ããããŸãã次ã«ã䞊ã¹æ¿ããåã«ãEXIFã¿ã°ã§æéã調æŽããå¿
èŠããããŸããexiftool "-DateTimeOriginal + = 00.00.0000 02:37:30" * .JPG-çŸåšã®ãã£ã¬ã¯ããªã®ãã¹ãŠã®JPGãã¡ã€ã«ã«ã€ããŠãDateTimeoriginalã¿ã°ã®æéãå°æ¥2:37:30ã«ã·ããããŸãã ./PhotoSort.sh ~/AllFromParty /media/backup/Photoes
äžèšãšåãã§ããããã¹ãŠã/ media / backup / Photoesãã£ã¬ã¯ããªã«ä¿åãããŸã
: , KDE , , . , , ( ).- , . ini-.
- . . RUN+= , - . udev' , KDE , â . , .
- .PhotoSort udev' . , root - . - . (, ) .
- , dosfslabel . udev - . - .
- : . Caanoo â .PhotoSort .
- - , RO .
- . , - , ?
åç
§ãªã¹ã