2つのパソコンのデータの同期を取りたいのですが、同じデータが2台のパソコンでは違うディレクトリの下に保存してあるものが多数あります。
たとえば、パソコンA:計画\H20\東北\仙台と、パソコンB:計画\2008\東北\仙台 が同じデータといった具合です。手持ちの同期ソフト、たとえばFireFileCopy等で同期を取ると、パソコンBのディレクトリ「計画」の下に、H20\東北\仙台をコピーして、2008\東北\仙台を削除します。コピーしたファイルと削除したファイルは実は同じ内容ですから、これを「H20\東北フォルダをつくり、そこに2008\東北\仙台を移動する」といった動作に変更できれば、無駄なコピーをする必要が無くなり同期の効率があがると思います。そのような同期ソフトありませんか?
A 回答 (10件)
- 最新から表示
- 回答順に表示
No.10
- 回答日時:
横から失礼します。
質問者さんが、同期ソフトとおっしゃっているので、回答者さんとの誤解を産んでいるのではないでしょうか?
質問者さんの望まれているのは、同期ソフトというより、うまいネーミングが思いつきませんが、「ファイル構造変形ソフト」のような気がします。
残念ながら私はそのようなソフトを知りませんが、いったん同期ソフトを忘れて検索されたらいかがでしょう?
回答ありがとうございます。
おっしゃるとおり、同期ソフトではないのかもしれません。
最終的には同期ソフトと同じ結果を得たいのですが、今回私が希望する機能は、同期ソフトそれ自身ではなく、同期ソフトを実行する前処理をするソフトが欲しいことがわかりました。
私が欲しいのは、
パソコンB:計画\2008\東北\仙台を パソコンAを参照して、計画\H20\東北\に移動させるソフト
です。このソフトでは、一切のコピーも削除も行わず、ファイルの移動だけを行うというものです。
引き続きそのようなソフトご存知ならお教えください。
また、どのようにして検索したらよいのか、ヒントがあればご教示よろしくお願いいたします。
一応プログラムの骨子はできたのですが、すでにあるなら作らずに使わせてもらいたいです。
/*
a[i] = "\\program\\free\\backup\\copysync.exe 1,472,249 2008-08-30 16:31:20"
のようなパス名付のファイル名および、ファイルサイズ、タイムスタンプをあらわす文字列
f1[i]=j ... a[i] == b[j] の意味
f2[i]=j ... a[i] と b[j] がパス名は異なるが対応するファイルの意味
*/
void main() {
char **a,**b;
int *f1,*f2;
GetFileNames(from, a); sort(a);
GetFileNames(to, b); sort(b);
match1(a,b, f1); // パス名込みで対応付け
match2(a,b,f1, f2); // ファイル名・タイムスタンプ・ファイルサイズで対応付け
move(a,b, f2); // 対応表f2に従いファイルの移動
}
No.9
- 回答日時:
>>しかし、「ファイルの内容が同じ」かどうかを判定するにはそのファイルを
>>開いて内容を見る(プログラム的な意味でね)必要がありますよね。
>違います。ファイル名・ファイルサイズ・タイムスタンプだけで比較するので、
>ファイルの内容を見る必要はありません。他の同期ソフトも、ファイルの中身までみてないと思いますよ。
他の同期ソフトがタイムスタンプでファイルが同一かどうか判断できているのは
「同じディレクトリ構造の A: 側と B: 側にあるファイル」を比較するだけで済んでいるためです。
B: 側の PC に同じファイル名(ディレクトリは異なる)でタイムスタンプも同じで
ファイルサイズも同じであるが、内容が異なる複数のファイルが存在する可能性を排除できません。
そのような状況で、ファイルの内容を確認せずに「正しい場所」にファイルを移動することは不可能です。
回答、再度ありがとうございます。
>他の同期ソフトがタイムスタンプでファイルが同一かどうか判断できているのは
>「同じディレクトリ構造の A: 側と B: 側にあるファイル」を比較するだけで済んでいるためです。
>
>B: 側の PC に同じファイル名(ディレクトリは異なる)でタイムスタンプも同じで
>ファイルサイズも同じであるが、内容が異なる複数のファイルが存在する可能性を排除できません。
なるほど。同一ファイルの判断基準が、私が希望するレベルと違うということですね。
koko_u_さんも、「内容が異なる複数のファイルが存在する可能性がある」ことを認めるのであれば、「同じディレクトリ構造の A: 側と B: 側にあるファイル」をタイムスタンプ・ファイルサイズを比較するだけでは同じと判断できないことは認めるわけですよね。
とりあえず、私の希望では、「ファイル名・タイムスタンプ・ファイルサイズが等しければ、同じファイルとみなす」という判断基準で十分です。
私の希望する仕様の同期ソフト、やっぱりないのでしょうかね。
自作して作れない内容ではないので、誰かが作っていると思ったのですが・・
お付き合いありがとうございました。
No.7
- 回答日時:
>(私が望む同期ソフト)パソコンAとパソコンBのすべてのファイルを見て、
> AB同じ場所にあるファイル、違う場所にある同じ内容のファイル、
> 片方だけにあるファイルに分類し、片方だけのファイルを削除・コピーし、
> 違う場所にあるファイルを正しい(パソコンAと同じ場所)に移動する方法
やーっと、わかった。
しかし、「ファイルの内容が同じ」かどうかを判定するにはそのファイルを
開いて内容を見る(プログラム的な意味でね)必要がありますよね。
ということは、同期プログラムが A: で動いているとして、B: 側にあるファイルの内容を
A: 側のプログラムが読めるように「コピーしてくる」必要があります。
それって、効率化の意味を失っているのではないでしょうか?
同じファイルが A: B: 両方にあるかを判断するまでもなく、
さっさとコピーしてしまうのが早いのではないですか?
>やーっと、わかった。
ありがとうございます。
>しかし、「ファイルの内容が同じ」かどうかを判定するにはそのファイルを
>開いて内容を見る(プログラム的な意味でね)必要がありますよね。
違います。ファイル名・ファイルサイズ・タイムスタンプだけで比較するので、ファイルの内容を見る必要はありません。他の同期ソフトも、ファイルの中身までみてないと思いますよ。
No.6
- 回答日時:
>こんな動作をする同期ソフトを探しているんです。
広い世の中、もしかするとご要望のソフトウェアもあるかもしれませんが、
色々考えると切りがないので、大抵のソフトは「ディレクトリ構造を含めて」コピーします。
例えば
A:\dira\file1.txt
A:\dira\file2.txt
と
B:\dirb\file1.txt
B:\dirb\file2.txt
がディレクトリ構造を無視して「同期」しているとして、A: 側の file1.txt と file2.txt はやっぱり別に分けたいなあ、と思って
A:\diraX\file1.txt
A:\diraY\file2.txt
としても、中にあるファイルは同じだから B: 側は変更されないんですよね?
本当にそのような動作を望んでいるのですか?
>ディレクトリ構造を無視して「同期」しているとして、
いえ、同期していないですよ。同期するとは、
B:\dirb\file1.txt
B:\dirb\file2.txt
を
B:\dira\file1.txt
B:\dira\file2.txt
にすることです。
>としても、中にあるファイルは同じだから B: 側は変更されないんですよね?
違いますよ。同期を取ってほしいので、A:側が、
A:\diraX\file1.txt
A:\diraY\file2.txt
に変わったら、B: 側も
B:\diraX\file1.txt
B:\diraY\file2.txt
に変更してほしいのです。
まだ、私の希望が正しく伝えら得ていないのでしょうか?
しつこいですが、もう一度言葉を換えて希望を述べます。
同期ソフトなので、パソコンAとパソコンBをまったく同じ(同じディレクトリに同じファイルがある状態)にしたいのです。そのためには以下の3種類の方法が考えられます。
(完全コピー型)パソコンBのファイルをすべて削除して、パソコンAのファイルをすべてコピーする方法。
(多くの同期ソフト型)パソコンBにパソコンAと同じ場所にある同じファイルには手をつけず、Bにだけあるファイルを削除して、Aにだけあるファイルをコピーする方法
(私が望む同期ソフト)パソコンAとパソコンBのすべてのファイルを見て、AB同じ場所にあるファイル、違う場所にある同じ内容のファイル、片方だけにあるファイルに分類し、片方だけのファイルを削除・コピーし、違う場所にあるファイルを正しい(パソコンAと同じ場所)に移動する方法
No.5
- 回答日時:
>そうですか? 一般の同期ソフトでも、ファイル名、タイムスタンプ、ファイルサイズが等しければ、
>同じデータであると判断して、コピーは行いませんよね。
それは「ディレクトリ構造が同じ」だから可能なんですね。
usatan2 さんが例に挙げていた内容では、
"計画\H20\東北\仙台" にあるファイルが "計画\2008\東北\仙台" にあることは
ソフトウェアにはわかりません。
同期先も同じ階層構造 "計画\H20\東北\仙台" であった場合に初めて、
中のファイルのサイズやタイムスタンプを比較できるのです。
"計画\H20\東北\仙台" の同期先が "計画\2008\東北\仙台" かもしれず、あるいは
"計画\2008年\東北\仙台" かもしれず、はたまた "計画\平成20年\東北\仙台" かもしれないような
状況に対応することは不可能です。
唯一可能な対応が「そうなめ」という意味です。
再度回答ありがとうございます。
>唯一可能な対応が「そうなめ」という意味です。
そうです。まさにそのとおりの処理を希望しています。
ファイル名を「そうなめ」して、必要最小限のデータのコピーで済ます同期ソフトを探しているのです。
>"計画\H20\東北\仙台" の同期先が "計画\2008\東北\仙台" かもしれず、あるいは
>"計画\2008年\東北\仙台" かもしれず、はたまた "計画\平成20年\東北\仙台" かもしれないような
>状況に対応することは不可能です。
はじめに見つかったファイルを移動させれば十分と思いますので、別に困らないのではないでしょうか。
アルゴリズムとしては、
1)まず、ファイルすべてをリストアップする。
2)同じディレクトリの同じファイルに同期済みの印をつける
3)印のないファイル同士でペアを作り、移動の印をつける
4)対応のつかなかったファイルをパソコンBから削除する
5)パソコンB内の移動の印のついたファイルを移動する
6)対応のつかなかったパソコンAのファイルをパソコンBにコピーする
以上
こんな動作をする同期ソフトを探しているんです。どこかにありませんか?
No.4
- 回答日時:
>どちらのソフトでも、ファイルの移動ではなく、削除・コピーを行っていましたけど
ちょっと待って下さい。
移動って何ですか?
同期というのは、同じ内容にする処理です。
もしかして、元データは消して異動先だけにデータを残せと言うのでしたらそれは同期とは言いません。
回答ありがとうございます。
>移動って何ですか?
ファイルやディレクトリをあるフォルダから別のフォルダに移動するという意味です。
>同期というのは、同じ内容にする処理です。
そうです。うまく私の希望が伝わっていないようなので、言い直します。
やってほしい処理:パソコンBにおいて、
cd パソコンB:計画\2008\東北
mv 仙台 計画\H20\東北\
実際にソフトが行った処理
copy パソコンA:計画\H20\東北\仙台 パソコンB:計画\H20\東北\
del パソコンB:計画\2008\東北\仙台
です。
No.3
- 回答日時:
>パソコンBに「計画\H20\東北」フォルダが無ければ作り、「計画\2008\東北\仙
台」ファイルをそこに移動する、ということをやってくれるソフトが欲しいので
す。
実際にやってますよ。
同期の単位は上位のフォルダ同士になりますが、対象とするフォルダを比較して、その中にフォルダがなければフォルダは自動作成されますよ。
それが同期というものです。
再度、回答ありがとうございます。
>実際にやってますよ。
えっ、本当ですか?
私の設定が悪いのかも知れませんが、確認したところ、どちらのソフトでも、ファイルの移動ではなく、削除・コピーを行っていましたけど・・・
ファイル移動となる設定方法をお教えください。重ねてよろしくお願いいたします。
No.2
- 回答日時:
フォルダアップデートマネージャ
http://www.vector.co.jp/soft/winnt/util/se297726 …
Realsync
http://www.vector.co.jp/soft/win95/util/se061150 …
前者は、設定した複数jのフォルダを個別に同期処理できるメリットがあります。もちろん、一括して処理することもできます。
回答ありがとうございます。
紹介くださったソフトは、ちょっと違う気がします。
パソコンBに「計画\H20\東北」フォルダが無ければ作り、「計画\2008\東北\仙台」ファイルをそこに移動する、ということをやってくれるソフトが欲しいのです。もっと賢ければ、パソコンBのフォルダ名「「計画\2008\東北\」を「計画\H20\東北」を変更してくれるだけでもうれしいです。ちょっと考えるだけでも例外が多発しそうで、そのようなソフトは作るのが大変そうですが・・・
No.1
- 回答日時:
>無駄なコピーをする必要が無くなり同期の効率があがると思います。
確かに「コピー」は減るかもしれませんが、「同じデータ」であることを判断するのに非常に時間がかかると思います。
usatan2 さんは H20\東北\仙台 と 2008\東北\仙台 が「同じと知っている」のでよいですが、
ソフトウェアは知るよしもないので、単純に考えれば、
両方の PC にある「全てのファイルをそうなめ」するしか方法はなさそうですね。
そんなことに時間を取られるくらいなら、多少無駄でもコピーしてしまった方がトータルとして早いと思います。
回答ありがとうございます。
>確かに「コピー」は減るかもしれませんが、「同じデータ」であることを判断するのに非常に時間がかかると思います。
そうですか? 一般の同期ソフトでも、ファイル名、タイムスタンプ、ファイルサイズが等しければ、同じデータであると判断して、コピーは行いませんよね。つまり、「全てのファイルをそうなめ」する必要はなく、「すべてのファイル名をそうなめ」するだけで済むと思います。たとえばファイル「仙台」が600MBの動画ファイルの場合、削除してコピーする現状と、移動で対処する場合ではその差は歴然と思います。削除とコピーを組み合わせる現状では、時間がとられるだけでなく、ファイルの断片化を促進する可能性が高いことになりますので、出来れば避けたいのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 新幹線 東北北海道新幹線の列車名を東海道山陽新幹線と同じにするとしたら皆さんはどう思いますか? 停車駅は下記 8 2022/06/11 11:40
- 新幹線 203x年に開業予定する北海道新幹線についてですが、東京、上野、大宮、仙台、盛岡、いわて沼宮内、二戸 1 2023/07/08 14:16
- 新幹線 2030年開業の東北北海道新幹線東京始発のはやぶさの案を考えて見ました。いかがでしょうか? 途中停車 4 2023/02/11 19:26
- Excel(エクセル) VBA ふたつの同じ様式シートのセルをコピーしたい 2 2023/03/08 15:28
- 東北 仙台観光 4 2022/06/15 07:21
- 避難所・仮設住宅 信用金庫 3 2023/01/17 20:16
- 関東 仙台の友達と今度日帰りで遊ぶのですが、どこかおすすめの場所、施設ありますか? お互いの移動距離と運賃 4 2022/09/14 12:23
- ルーター・ネットワーク機器 家庭内LAN 4 2023/06/29 12:13
- CM 東北4大祭り、秋の延期はどう? 3 2023/07/19 07:47
- 医療保険 大型ショッピングセンター 2 2022/09/30 08:30
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
exeファイルの中身を見ることは...
-
jlbという拡張子のファイルを開...
-
windowsでpkgファイルを開きた...
-
拡張子 .lhdはどのようなソフト...
-
ISOファイルとMDSファイ...
-
動画ファイルにパスワードをつ...
-
inddという拡張子ファイルを開...
-
txtファイルから特定の文字列が...
-
mdsファイルを開くにはどうすれ...
-
拡張子 「LPD」って なにで編...
-
BOX(ファイル共有)でエクセル...
-
大量のPDFファイル 名前変更フ...
-
指定したファイルのアクセス数...
-
拡張子より前の部分が同じファ...
-
リンク先のファイルを一括ダウ...
-
FileVisorは今でも使えますか?
-
.atc の拡張子のファイルを開け...
-
暗号化(アタッシュケース)し...
-
携快電話のメールファイル(*.ml...
-
相手先の方がPDFを開けません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
exeファイルの中身を見ることは...
-
jlbという拡張子のファイルを開...
-
拡張子 .lhdはどのようなソフト...
-
windowsでpkgファイルを開きた...
-
winMXとwinnyの違い
-
ファイル検索ソフトEverything ...
-
txtファイルから特定の文字列が...
-
相手先の方がPDFを開けません
-
BOX(ファイル共有)でエクセル...
-
FileVisorは今でも使えますか?
-
拡張子 「LPD」って なにで編...
-
mdsファイルを開くにはどうすれ...
-
Win10でショートカットファイル...
-
Docuworksで文書の一括回転操作...
-
inddという拡張子ファイルを開...
-
リンク先のファイルを一括ダウ...
-
拡張子がpxd開きたい
-
動画ファイルにパスワードをつ...
-
拡張子より前の部分が同じファ...
-
ISOファイルとMDSファイ...
おすすめ情報