저는 미디어 센터로 이동하기 전에 미디어/다운로드 센터의 일부를 Windows에서 Linux로 마이그레이션하려고 했습니다. 이제 Raspbian으로 Raspberry Pi를 설정했으므로 이동하기 전에 여기에서 다양한 작업을 시도해 보겠습니다.
이제 내 미디어 센터에서 일부 파일을 다운로드하고 있으며 해당 파일을 한 디렉터리에서 다른 디렉터리로 복사해야 합니다. 가장 기본적인 Linux 명령을 사용하여 이 부분을 수행할 수 있지만 실제 문제는 파일이 복사될 때 파일에 어떤 일이 발생하는지에 있습니다.
Windows에는 주기적으로 실행되는 배치 스크립트가 있습니다. - "a"에서 "b"로 파일을 복사하고 로그 파일을 생성합니다. -a 프로그램은 파일 이동 및 이름 변경을 위해 폴더 "b"를 감시합니다. 로그 파일은 스크립트가 동일한 파일을 다시 복사하는 것을 방지하여 미디어 폴더에 중복 파일이 나타나는 것을 방지합니다.
코드는 아래와 같이 표시됩니다.
ROBOCOPY "location A" "Location B" /NP /M /S /LOG+:c:\batches\Rename.log
리눅스에서 이것이 가능합니까? 가능하다면 어떻게 달성할 수 있나요?
답변1
rsync는 이런 종류의 작업에 적합합니다. 이름을 바꾸거나 다른 작업을 수행할 필요가 없으며 새 콘텐츠나 업데이트된 콘텐츠만 복사하면 됩니다. 요구 사항에 따라 동작을 변경할 수 있는 다양한 옵션이 있습니다.
예를 들어:
rsync -av /location/a/* /location/b
답변2
리눅스에서는 무엇이든 할 수 있습니다!
crond를 사용하여 주기적으로 실행할 프로세스를 작성하고 bash 스크립트를 사용하여 파일을 복사할 수 있습니다.
두 개의 디렉터리를 생성한다고 가정해 보겠습니다.
pi@raspberrypi2 ~ $ mkdir tmp
pi@raspberrypi2 ~ $ cd tmp/
pi@raspberrypi2 ~/tmp $ mkdir 1;mkdir 2
그런 다음 파일을 디렉터리 1에 배치합니다.
pi@raspberrypi2 ~/tmp $ touch 1/file1
그런 다음 다음과 같이 스크립트를 만듭니다.
예. 간단한 bash 스크립트:
#!/bin/bash
for i in $(ls 1/);do
if [ -e 2/$i ];then
echo "File already copied to directory 2" >> logfile.log
else
cp 1/$i 2/$i
if [ $? = 0 ];then
echo "File $i copied to directory 2" >> logfile.log
else
echo "Error copying file $i to directory 2" >> logfile.log
fi
fi
done
디렉터리 1에서 디렉터리 2로 파일을 복사합니다. 또한 echo 명령을 사용하여 메시지를 로그 파일에 기록합니다.
시험:
pi@raspberrypi2 ~/tmp $ ls 1/ 2/
1/:
file1
2/:
pi@raspberrypi2 ~/tmp $ bash script.sh
pi@raspberrypi2 ~/tmp $ ls 2/
file1
pi@raspberrypi2 ~/tmp $ cat logfile.log
File file1 copied to directory 2
pi@raspberrypi2 ~/tmp $ bash script.sh
pi@raspberrypi2 ~/tmp $ ls 2/
file1
pi@raspberrypi2 ~/tmp $ cat logfile.log
File file1 copied to directory 2
File already copied to directory 2
pi@raspberrypi2 ~/tmp $
그런 다음 crontab에 cronjob을 삽입하여 정기적으로 스크립트를 실행할 수 있습니다.
pi@raspberrypi2 ~/tmp $ crontab -e
# run the script at at 5 a.m every day:
0 5 * * * bash /home/pi/tmp/script.sh
파일을 저장하고 cronjob이 설치되어 있는지 확인합니다.
pi@raspberrypi2 ~/tmp $ crontab -l
0 5 * * 1 bash /home/pi/tmp/script.sh
원하는 대로 스크립트를 작성할 수 있습니다. 이 예가 시작점입니다.
참고: Raspberry Pi A+에서 실행되는 Raspbian에서 테스트되었습니다. :)