|
分類:[C#]
Windows7 32bit pro VisualStudio2010 C# サーバーのバックアップをとるのに string[] files = Directory.GetFiles(@"\\svr1\F$\HIMITU", "*", SearchOption.AllDirectories); string pas, horder; string user = Environment.UserDomainName + "\\" + Environment.UserName; FileSystemAccessRule fsaRule = new FileSystemAccessRule(user, FileSystemRights.FullControl, AccessControlType.Allow); FileSecurity security;
for (int CT1 = 0; CT1 < files.Length; CT1++) { FileAttributes fas = File.GetAttributes(files[CT1]); if ((fas & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) { fas = fas & ~FileAttributes.ReadOnly; File.SetAttributes(files[CT1], fas); }
pas = Drive + ":\\" + HI + "\\F" + files[CT1].Substring(9); horder = Path.GetDirectoryName(pas); Console.WriteLine(files[CT1] + "---->" + pas); if (Directory.Exists(horder) == false) { Directory.CreateDirectory(horder); }
security = File.GetAccessControl(files[CT1]); security.AddAccessRule(fsaRule); File.SetAccessControl(files[CT1], security);
File.Copy(files[CT1], pas, true);
security.SetAccessRuleProtection(true, true); security.PurgeAccessRules(new NTAccount(user)); File.SetAccessControl(files[CT1], security); } としてHIMITUホルダーの中のファイル名を全部取得し、セキュリティを解除してコピーし、コピー後セキュリティを元に戻しています。 最初のうちはうまくいっていたのですがある日から突然セキュリティエラーでコピーが止まってしまうようになってしましました。 どうやらなにか変なデータがサーバー内にできたようですが80GBもあるデータの中のどれが悪いかなんてどうやって調べればいいんじゃーとなってしましました。 このプログラムのどこをどう直せばセキュリティに影響されずに全てのファイルをコピーできるでしょう?お知恵をお貸しください。 よろしくお願いいたします。m(_ _)m
|