問題タブ [hardlink]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - Git タグ内のファイルへのハード リンク (別のプロジェクトにファイルを含めるため)
そのため、さまざまなプロジェクトで使用する小さなファイルがいくつかあります。たとえば、PHP 用の MySQL ラッパーと、C++ でバッファを管理するためのクラスがあります。今まで、私はそれらを 1 つの SVN リポジトリに保管してきました。次に、プロジェクトでそれを使用するときに、タグを作成し (SVN のタグ フォルダーにコピーするだけです)、プロジェクトからそのタグにハード リンクします。そうすれば、トランク内のコピーに何かを追加、削除、または修正しても、プロジェクトには影響しません。
このように、後でプロジェクトを新しいバージョンに切り替えたい場合は、新しいバージョンを使用するタグ付きバージョンの違いを確認し、必要に応じてプロジェクト内のコードを更新し、ハード リンクを変更するだけです。
ただし、現在、ほとんどのコードを Git に変更中です。Git にタグがあることは知っていますが、フォルダーにはトランクしか含まれていません (タグは単純なディレクトリではなく、バージョン履歴に保存されます)。後で変更を加えることなく、これらのファイルの特定のタグにリンクする最善の方法は何ですか? 私が考えることができる唯一の方法は、特定のタグをチェックアウトして、それにリンクすることです。ただし、これには、異なるバージョンを使用しているすべてのプロジェクトでチェックアウトする必要があり、必要以上に面倒に思えます。
これを行う簡単な方法はありますか?
ありがとう。
python - Pythonを使用して重複ファイルをハードリンクに置き換える方法は?
私は写真家で、多くのバックアップを行っています。何年にもわたって、私は自分がたくさんのハードドライブを持っていることに気づきました。NAS を購入し、rsync を使用してすべての写真を 3TB の RAID 1 にコピーしました。私のスクリプトによると、これらのファイルの約 1 TB が重複しています。これは、ラップトップでファイルを削除する前に複数のバックアップを実行し、非常に面倒なことに起因します。古いハード ドライブにあるこれらすべてのファイルのバックアップはありますが、スクリプトによって問題が発生すると大変なことになります。私の複製ファインダースクリプトを見て、それを実行できるかどうか教えてください。テスト フォルダで試してみたところ問題ないようですが、NAS を台無しにしたくありません。
このスクリプトには、3 つのファイルに 3 つのステップがあります。この最初の部分では、すべての画像とメタデータ ファイルを見つけて、それらのサイズをキーとしてシェルブ データベース (datenbank) に入れます。
第二部。ここで、リストにファイルが 1 つしかないすべてのファイル サイズを削除し、md5 ハッシュをキーとして、ファイルのリストを値として別のシェルブ データベースを作成します。
そして最後に最も危険な部分。evrey md5 キーの場合、ファイル リストを取得し、追加の sha1 を実行します。一致する場合は、そのリスト内の最初のファイルを除くすべてのファイルを削除し、削除されたファイルを置き換えるためのハード リンクを作成します。
どう思いますか?どうもありがとうございました。
*それが重要な場合: Synology 713+ で、ext3 または ext4 ファイルシステムを持っています。
mercurial - Mercurial リポジトリのデータ破損
に Mercurial リポジトリがありますc:\Dropbox\code
。以下を使用して、このレポのクローンをローカルに作成しました。
このベア リポジトリは、バックアップのみを目的としています。私は定期的に変更を codeBackup にプッシュしています。さらに、両方のディレクトリがクラウド (それぞれ Dropbox と Google ドライブ) にバックアップされます。
code
クローン操作で元のリポジトリへのハードリンクが使用されたため、リポジトリが破損した場合、リポジトリはcodeBackup
自動的に破損しますか? したがって、私のダブル クラウド バックアップ戦略は役に立たないのでしょうか?
PS : フォールバック オプションは、クラウド サービスを使用して以前の既知の良好な状態を復元することであることを理解しています。
更新:掘り下げた後、参考のためにこれらを追加します
問題は、'hg clone' が (--pull オプションなしで) 実行された場合、ファイルシステムがハードリンク機能を提供している場合 (NTFS が提供する)、ハードリンク1を使用して、宛先とソースのリポジトリが .hg/store 内のファイルを共有することです。 .
Mercurial は、クローンの 1 つに対してコミットまたはプッシュが行われると、.hg 内のそのようなハードリンクを解除するように設計されています。このための前提条件は、mercurial が「このファイルにはいくつのハードリンクがありますか?」と尋ねる場合、mercurial が使用している Windows API が正しい答えを返すことです。
hg プロセスが 1 つの Windows コンピューターで実行されていて、リポジトリ ファイルが別の Windows コンピューターのネットワーク共有にある場合、この回答はほとんど常に間違っていることがわかりました (実際には 1 より大きい場合でも、常に 1 と報告されます)。
ハードリンクを回避するには (--pull を使用):
hg clone -U --pull c:\Dropbox\code c:\GoogleDrive\codeBackup
ハードリンクを確認するには:
fsutil hardlink list <file>
: のすべてのハードリンクを表示します<file>
find . -links +1
: ハードリンクが 1 を超えるすべてのファイルを表示しますls -l
: 各ファイルの横にハードリンク数を表示
backup - ハードリンクなしのRsnapshot?
Rsnapshot を使用して、すべてのサーバーを EncFS 暗号化パーティションにバックアップしています。パーティションはparanoia
EncFS が提供するデフォルト モードで作成されているため、ハード リンクはサポートされていません。
初回は Rsnapshot を実行できますが (、、を作成daily.0
) weekly.0
、monthly.0
2 回目は実行できません。
ハードリンク機能なしで Rsnapshot を使用する方法はありますか? 少しばかげているように聞こえるかもしれませんが、私rsnapshot.conf
は非常によく構成されているので、別のソフトウェアに切り替えたり、EncFS ボリュームを消去して再作成したりしたくありません。
ありがとうございました
php - link() 操作は許可されていません
これは奇妙で、うまくいくこともあれば、うまくいかないこともあります。
link() の引数の var_dumps を入れました。
__
__
__ ABOVE WORKED (ここではエラーはなく、実際にハード リンクが作成されました)
__
私は本当にパターンを見つけることができません....そして、以前のパターンの1つを手動でテストするスクリプトを作成すると、失敗します:
アパッチのログ:
宛先名の _ のストライピング スペースは役に立ちませんでした。
ありがとう!
windows - MSWord がハード リンクを壊す
質問:
別のディレクトリへのハード リンク (mklink /h) を使用して MSWORD ファイルを操作するオプションはありますか?
私が経験したこと:ファイルのハード リンクを別のディレクトリに
作成した後、元のドキュメントまたは「リンクされた」ドキュメントのいずれかを変更すると、完全に非同期化されます。.docx
考えられる原因:
MSWord は、変更中にファイルのコピーを作成し、元のファイルをそれで置き換えます。ハードリンクを切断します。
linux - UNIXでマーカーファイルを作成する最も安価な方法
単なる存在によってブール条件を示すことを唯一の目的とするファイルを (たくさん) 作成する必要があります。これらのファイルにはコンテンツがなく、アクセス/変更時間または所有権は関係ありません。彼らの存在だけが重要です。
最も安価で最速の方法は、ファイル システム内の固定ターゲットへのハード リンクを作成することだと考えました。
ハードリンクの最大カウント (= ext4 では 64000 だと思います) の小さな不都合がありますが、変数ターゲットを使用するループを作成することで回避できます。
おそらくハードリンク以外のものを使用して、私が望むことを行うためのより簡単な方法はありますか?
ありがとう。
unix - Unixでのファイル削除メカニズムはどのように機能しますか?
ファイル削除の内部メカニズムが Unix でどのように機能するのか疑問に思っています。
実際のファイルを指すハード リンクがいくつかある場合、ファイルを削除するにはすべてのリンクを削除する必要がありますか?
ファイルを削除すると、ハード リンクは自動的に破棄または削除されますか?
一方、シンボリック リンクを使用してファイルを指す場合、ファイルを削除するにはどうすればよいですか?
最後に、ファイルを指しているすべてのリンクが破棄されると、ファイルのスペースが別の用途に解放されます。あれは正しいですか?