
나는 내 여자친구가 동일한 파일이 포함된 약 1,000개의 USB 플래시 드라이브를 로드해야 하는 이벤트를 도와주고 있습니다.
다소 작은 파일(몇 MB에 불과)이지만 지루한 부분은 실제로 파일을 복사하는 것입니다.
USB 플래시 드라이브에 파일을 삽입하는 순간 자동으로 파일을 복사하는 방법이 있나요? 그러면 그녀의 일이 매우 쉬워질 것입니다.
내 데스크톱 OS는 Windows 10이지만 Linux에도 액세스할 수 있습니다. 나는 Linux용 bash 스크립트를 작성하는 것이 더 쉽다면 반대하지도 않을 것입니다.
답변1
Ubuntu 16.04에서는 USB 플래시 드라이브가 에 마운트되어 있지만 /media/$USER/LabelName
이를 모르고 파일 복사를 처리하는 것이 가능합니다. 대략적인 스크립트는 다음과 같습니다:-
#!/bin/bash
while sleep 1
do [ -e /media/$USER/*/TheFile ] || cp TheFile /media/$USER/*/
umount umount /media/$USER/*
xmessage -center -timeout 3 "File copied - change disc"
done
이것은 단지 원리를 보여주기 위한 것입니다. 당신이 해야 할 한 가지는 /media/$USER/
시작하기 전에 아무것도 마운트되지 않았는지 확인하는 것입니다(첫 번째 드라이브를 이미 마운트하지 않은 경우). 매개변수나 미리 설정된 환경 변수로 바꿀 수 있지만 TheFile
경로가 없도록 현재 디렉터리에 있는지 확인하세요. 그렇지 않으면 드라이브에 해당 변수가 있는지 확인하는 데 이미 실패합니다.
설치하지 않고도 Ubuntu Live 디스크에서 이 모든 작업을 수행할 수 있지만 펜 드라이브가 마운트된 위치를 확인하고 필요한 경우 스크립트를 수정해야 합니다. 또한 Live 디스크에 이 포함되어 있는지 확실하지 않으므로 xmessage
드라이브 변경이 필요함을 나타내는 다른 방법을 사용하지 않는 한 이를 설치해야 할 수도 있습니다.
답변2
확장AFH의 기본 아이디어, Linux OS가 플래시 드라이브를 자동으로 마운트한다고 가정합니다 /media/$USER
.
#! /bin/bash
src="$1"
target="$(basename "$src")"
counter=0
copyTo() {
sleep 0.3 # wait for drive to be fully mounted
printf -v offset '%*s' $(( counter * 15 % ($(tput cols) - 15) ))
echo "$offset Copy to $counter"
cp "$src" "$1/$target"
sync "$1"
umount "$1"
echo "$offset Unmounted $counter"
}
inotifywait -me create --format "%w%f" "/media/$USER" |
while IFS='' read -r drive; do
((++counter))
copyTo "$drive" &
done
용법
inotifywait
아직 설치하지 않았다면 설치하세요 . 우분투에서는sudo apt install inotify-tools
그렇게 하는 데 사용합니다.- 파일 관리자(예: nemo 또는 nautilus)를 다음과 같이 구성하십시오.~ 아니다마운트된 드라이브를 자동으로 엽니다.
umount
파일 관리자 창에 마운트 해제할 드라이브의 내용이 표시되면 실패할 수 있습니다. - 스크립트를
autocopy.sh
. - 다음을 사용하여 스크립트를 실행 가능하게 만듭니다.
chmod u+x autocopy.sh
- 다음을 사용하여 스크립트를 시작하십시오.
./autocopy.sh '/path/to/file.ext'
- 원하는 만큼 USB 플래시 드라이브를 삽입하세요. 스크립트는 연결된 드라이브를 감지하여 해당 드라이브에 파일을 복사하고 마운트 해제합니다.
- 완료되면 키를 눌러 CtrlC스크립트를 종료하세요.
산출
스크립트는 파일이 복사되기 전과 드라이브가 마운트 해제된 후에 인쇄됩니다. 관련 메시지는 동일한 수준으로 들여쓰기됩니다.
Copy to 1
Unmounted 1
Copy to 2
Copy to 3
Unmounted 3
Unmounted 2
Copy to 4
Unmounted 4
숫자는 신뢰할 수 없을 수도 있습니다. 동일한 스틱을 두 번 삽입하면 두 번 계산됩니다.