ビデオの名前を変更して移動するスクリプトを取得しようとしています。これが私が持っているものです:
#!/bin/bash
src="/mnt/Files_Apps/temp/"
dest="/mnt/Files_Apps/TFTP root/"
for file in "$src"*.*; do
newfile="${dest}$(date -r "$file" +"%Y-%m-%d %H %M %S").MOV"
mv "$file" "$newfile"
done
ソースディレクトリの内容を数回変更しました。詰まるファイルもあれば、正常に動作するファイルもあります。特定のファイル(すべて.MOV形式で、iPhoneからインポートされたもの)が重複として表示される理由がわかりません。
mount
の出力:
//GRAMNAS/Files_Apps on /mnt/Files_Apps type cifs (rw,relatime,vers=1.0,sec=ntlm,cache=strict,username=xxxxx,uid=1208001104,forceuid,gid=1208001114,forcegid,addr=x.x.x.x,unix,posixpaths,serverino,mapposix,acl,rsize=1048576,wsize=1048576,actimeo=1)
スクリプトを実行する前のsrcのls-li:
~/.scripts$ ls -li /mnt/Files_Apps/temp/
total 697384
13238340 -rwxrwxrwx 1 chris linuxadmin 8844047 Jul 19 21:39 IMG_5624.MOV
13238349 -rwxrwxrwx 1 chris linuxadmin 96701684 Apr 14 11:58 IMG_7355.MOV
13238366 -rwxrwxrwx 1 chris linuxadmin 98690685 Apr 17 15:06 IMG_7426.MOV
13238384 -rwxrwxrwx 1 chris linuxadmin 100289499 May 5 14:32 IMG_7568.MOV
13238579 -rwxrwxrwx 1 chris linuxadmin 75031725 May 8 11:57 IMG_7662.MOV
13239032 -rwxrwxrwx 1 chris linuxadmin 86233885 May 9 10:13 IMG_7672.MOV
13239098 -rwxrwxrwx 1 chris linuxadmin 76930641 May 9 16:03 IMG_7687.MOV
13239466 -rwxrwxrwx 1 chris linuxadmin 78796811 May 13 13:22 IMG_7806.MOV
13240809 -rwxrwxrwx 1 chris linuxadmin 92599209 May 14 12:39 IMG_7951.MOV
スクリプト実行前のdestでのls-li:
~/.scripts$ ls -li /mnt/Files_Apps/TFTP\ root/
total 0
スクリプト出力:
~/.scripts$ bash -v videorename.sh
date -r "$file" +"%Y-%m-%d %H %M %S"
mv: '/mnt/Files_Apps/temp/IMG_5624.MOV' and '/mnt/Files_Apps/TFTP root/2016-07-19 21 39 21.MOV' are the same file
date -r "$file" +"%Y-%m-%d %H %M %S"
mv: '/mnt/Files_Apps/temp/IMG_7355.MOV' and '/mnt/Files_Apps/TFTP root/2016-04-14 11 58 26.MOV' are the same file
date -r "$file" +"%Y-%m-%d %H %M %S"
mv: '/mnt/Files_Apps/temp/IMG_7426.MOV' and '/mnt/Files_Apps/TFTP root/2016-04-17 15 06 35.MOV' are the same file
date -r "$file" +"%Y-%m-%d %H %M %S"
.
.
.
スクリプト実行後のsrcのls-li:
~/.scripts$ ls -li /mnt/Files_Apps/temp/
total 697384
13238340 -rwxrwxrwx 1 chris linuxadmin 8844047 Jul 19 21:39 IMG_5624.MOV
13238349 -rwxrwxrwx 1 chris linuxadmin 96701684 Apr 14 11:58 IMG_7355.MOV
13238366 -rwxrwxrwx 1 chris linuxadmin 98690685 Apr 17 15:06 IMG_7426.MOV
13238384 -rwxrwxrwx 1 chris linuxadmin 100289499 May 5 14:32 IMG_7568.MOV
13238579 -rwxrwxrwx 1 chris linuxadmin 75031725 May 8 11:57 IMG_7662.MOV
13239032 -rwxrwxrwx 1 chris linuxadmin 86233885 May 9 10:13 IMG_7672.MOV
13239098 -rwxrwxrwx 1 chris linuxadmin 76930641 May 9 16:03 IMG_7687.MOV
13239466 -rwxrwxrwx 1 chris linuxadmin 78796811 May 13 13:22 IMG_7806.MOV
13240809 -rwxrwxrwx 1 chris linuxadmin 92599209 May 14 12:39 IMG_7951.MOV
スクリプト実行後のdestでのls-li:
~/.scripts$ ls -li /mnt/Files_Apps/TFTP\ root/
total 0
結局のところ、問題はCIFS共有がどのようにマウントされたかを中心に展開されていました。 iノードがキャッシュされている可能性があるため、スクリプトが新しいファイル名を書き込もうとしたときに、ほとんどのファイルが重複しているようです。これを解決するために、fstabに「cache = none」を追加し、共有を再マウントしました。それ以来、問題なくスクリプトを数回実行しました。
問題が何であったかはわかっていますが、なぜ問題が発生したのかはまだ完全にはわかりません。これがCIFSマウントにどのように影響するかについて誰かが洞察を持っているなら、私はすべての耳です。
スペースの処理はそれほど面倒ではありません。
#!/bin/bash
src="/mnt/Files_Apps/temp/"
dest="/mnt/Files_Apps/TFTP root/"
for file in "$src"*.*; do
newfile="${dest}$(date -r "$file" +"%Y-%m-%d %H %M %S").MOV"
mv "$file" "$newfile"
done
それがあなたの問題を解決するかどうか教えてください。少なくともそれはもっと簡単です。