これは、私が一言で言った最も奇妙なファイルシステム関連の問題です。テキストファイルがPerlでcifsのマウントポイントに不完全に移動しました
I have a scriptは、基本的にリモートのIMAPサーバーに接続し、電子メールをダウンロードし、読み取り、rip-offゴミ箱にして.txt
と.xml
ファイルのみをダウンロードします。 .txt
の場合Text::Unaccent
を使用してアクセントを削除してください。
これは、imapリモートフォルダとこのサーバのローカルcifsマウントフォルダとの1対1の関係で行われます。 imapのダウンロードとアクセント除去の処理はうまく動作します。
私の問題は、ファイルをダウンロードしてアクセントを処理し、cifs
マウントされたディレクトリに移動すると、ファイルがリッピングされてしまいます(最後の4〜10Kが欠落しています)。同じマシンのanoterパーティションに移動すると、ファイルは正常な方法で移動されます(同じmd5sum
、同じファイルサイズ、変更された変更はdiff
)。
アクセント削除し、ファイルに移動するコードのチャンク:
#If file extension = .txt
if ("$temp_dir/$arquivo" =~ /txt$/i){
#Put file line by line inside array
open (LEITURA, "$temp_dir/$arquivo");
@manipular = <LEITURA>;
close LEITURA;
#Open the same file to writing with other filehandler
open (ESCRITA, ">", "$temp_dir/$arquivo");
foreach $manipula_linha (@manipular){
# Removes & and accents
$manipula_linha =~ s/\&/e/g;
$manipula_linha = unac_string("UTF-8", $manipula_linha);
print ESCRITA $manipula_linha;
};
};
# copy temp file to final destination. If cifs = crash
# move also does not work...
copy "$temp_dir/$arquivo", "$dest_file";
unlink "$temp_dir/$arquivo";
CIFSバージョン:
[[email protected] mail_downloader]# modinfo cifs
filename: /lib/modules/2.6.18-409.el5.centos.plus/kernel/fs/cifs/cifs.ko
version: 1.60RH
description: VFS to access servers complying with the SNIA CIFS Specification e.g. Samba and Windows
license: GPL
Perlバージョン:
[[email protected] mail_downloader]# perl --version
This is perl, v5.8.8 built for i386-linux-thread-multi
Unaccentバージョン:
を[[email protected] mail_downloader]# rpm -qa | grep Unaccent
perl-Text-Unaccent-1.08-1.2.el5.rf
質問:なぜperl move
またはcopy
にCIFSマウントポイントでこの現象があり、これを解決するための手掛かりがありますか?
明らかに私はファイルの内容をここに掲示することはできません。なぜなら、EDI関連のもので、財務情報があるからです。私はunaccentがcp
またはmv
を使用して行われた後のperl copy
は自分自身をファイルを扱う場合は、コメント
はまた、ファイルがcifs
マウントポイントに正確に移動されます。
です。私には恥ずべき。私はテスト目的のために他のスクリプトに書かれたこの無力な機能を持っていました、そして、私は 'close ESCRITA'をこれに移植するのを忘れました。あなたは正しいと思います。 – nwildner
4つの '.txt'ファイルで電子メールを受信した後、問題が再現します。私は、ファイルのクローズに関してのみ関連しているとは思わない。 cifsが利用できないことに関する 'dmesg'メッセージはありません... – nwildner
問題はcifではなく、書き込みをバッファするローカルファイルシステムです。私はファイルを閉じると、ディスクに内容をフラッシュする原因になるだろうが、それは少しの助けが必要なように聞こえる。私は動作するはずのファイルをフラッシュする方法で私の答えを更新しました。 –