web-dev-qa-db-ja.com

mvコマンドは「XとYは同じファイルです」と報告します、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

ソースディレクトリの内容を数回変更しました。詰まるファイルもあれば、正常に動作するファイルもあります。特定のファイル(すべて.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
2
cgram

結局のところ、問題はCIFS共有がどのようにマウントされたかを中心に展開されていました。 iノードがキャッシュされている可能性があるため、スクリプトが新しいファイル名を書き込もうとしたときに、ほとんどのファイルが重複しているようです。これを解決するために、fstabに「cache = none」を追加し、共有を再マウントしました。それ以来、問題なくスクリプトを数回実行しました。

問題が何であったかはわかっていますが、なぜ問題が発生したのかはまだ完全にはわかりません。これがCIFSマウントにどのように影響するかについて誰かが洞察を持っているなら、私はすべての耳です。

2
cgram

スペースの処理はそれほど面倒ではありません。

#!/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

それがあなたの問題を解決するかどうか教えてください。少なくともそれはもっと簡単です。

0
yarl