Я создаю программу, которая будет создавать резервные копии моего проекта git, когда они мне понадобятся, и пытаюсь скопировать все файлы внутри одного каталога вместе со всеми файлами, находящимися внутри каталогов, каталогов. Однако, когда я запускаю эту программу, она только копирует, что файлы, которые находятся внутри исходного каталога, например, у меня есть этот каталог:Recursivley копирует файлы внутри каталога, внутри другого каталога.
$ ls
email/
Внутри этого каталога у меня есть эти файлы и каталоги:
$ ls
gen_email.rb* lib/ LICENSE.txt log/ readme.md
Внутри lib
меня
email/ list.yml modules/ tools/
Внутри log
меня
email_log.LOG
Теперь мне нужно, чтобы иметь возможность копировать файлы внутри этого каталога, вместе с файлами, которые находятся внутри lib
и log
вместе с каталогами и файлами, которые находятся внутри них.
Когда я запускаю эту программу, я получаю следующее:
'06-02-2016 fl2knjas.z24'/
И внутри этого:
gen_email.rb* LICENSE.txt readme.md
Так что моя программа делает это работа, да, но он уходит из некоторых каталоги и файлы ..
Источник:
using System;
using System.IO;
namespace BackupGen
{
class Program
{
static void Copy(string strtDir, string destDir)
{
foreach (var file in Directory.GetFiles(strtDir))
File.Copy(file, Path.Combine(destDir, Path.GetFileName(file)));
foreach (var directory in Directory.GetDirectories(strtDir))
Copy(directory, Path.Combine(destDir, Path.GetFileName(directory)));
}
static void Main(string[] args)
{
var date = DateTime.Now.ToString("MM-dd-yyyy");
var fileName = Path.GetRandomFileName();
var dir = Directory.CreateDirectory($"{date} {fileName}");
Console.WriteLine("Attempting to create a backup..");
try
{
Directory.CreateDirectory([email protected]"Z:\backups\{dir}");
Copy(@"C:\Users\git_orgin\email", [email protected]"Z:\backups\{dir}");
Console.WriteLine($"Backup created as {dir}");
Console.ReadLine();
}
catch (Exception e)
{
Console.WriteLine("Something went wrong.. {0}", e.ToString());
}
}
}
}
Вопрос, как я могу заставить это продолжить работу по всем каталогам, внутри strtDir
и скопировать все файлы?
Что случилось с 'System.Diagnostics.Process.Start()' для запуска команды xcopy, которая уже может рекурсивно копировать файлы? –
@EricJ. : Может быть, он хочет реализовать свою собственную систему отчетности о прогрессе? :) –
Отличное упражнение, но если колесо уже существует, я хотел бы указать его :-) –