
Security News
Astral Launches pyx: A Python-Native Package Registry
Astral unveils pyx, a Python-native package registry in beta, designed to speed installs, enhance security, and integrate deeply with uv.
= girror
Girror == [G]it the M[irror]
A CLI remote-to-local directory mirroring tool, the poor man's "filezilla" which I couldn't google up, so decided to make it myself.
What does it do?
Girror doesn't need any special server software on the remote side besides the ssh/sftp.
== CLI reference
=== girror -h Girror cli tool, version 0.0.5.
Mirrors the remote sftp site and stores the changes in a local git repo.
Command Line Usage:
girror [options] remote_uri
remote_uri: a complete sftp uri of a remote location;
remote_uri may be in the form of either "user:pass@host:path" or "host:path". In the latter case username is taken from the environment variable $USERNAME.
Options: -l, --log place place = ['syslog' or a filename]: Logging destination (default is STDERR). --renc encoding Remote filename encoding; defaults to 'utf-8'. --lenc encoding Local filename encoding; defaults to 'utf-8'. -o, --output path Output directory, should be a git repo workdir. -v, --verbose Be verbose: log tons of debugging. THOUSANDS OF THEM! -h, --help Display this help message.
== Configuration file
Some runtime options may be specified in _girror/config.rb file in local "mirror" directory. SSH-cpecific tuning may also be done there. Here's the example with the tested options:
=== _girror/config.rb
module Config
OPTIONS = { # custom commit message :commit_msg => Proc.new {"State at #{Time.now}"},
# local filename encoding
:lenc => 'koi8-r',
# remote filename encoding
:renc => 'cp1251',
# some specific ssh options
# currently available are:
# - :keys
# - :compression
:ssh => {
# specific ssh secret key files are listed in this array
:keys => ['/home/paul/.ssh/id_dsa_somekey'],
# you may set this to true or one of algo settings
# (see docs for Net::SSH.start)
:compression => true
}
}
end
== Usage example
[paul@paul site]$ git init mirror Initialized empty Git repository in /usr/home/paul/work/Krotov/site/mirror/.git/ [paul@paul site]$ girror -o mirror paul@paul:/home/paul/develop/ruby/girror I, [2010-12-31T13:43:35.843256 #2341] INFO -- : Starting I, [2010-12-31T13:43:35.843515 #2341] INFO -- : Opening local git repo at mirror I, [2010-12-31T13:43:35.843848 #2341] INFO -- : Changed to /usr/home/paul/work/Krotov/site/mirror I, [2010-12-31T13:43:35.860511 #2341] INFO -- : Not using stored config: no such file to load -- config Enter passphrase for /home/paul/.ssh/id_dsa: I, [2010-12-31T13:43:40.856664 #2341] INFO -- : Connected to remote paul as paul I, [2010-12-31T13:43:40.863612 #2341] INFO -- : Fetching file /home/paul/develop/ruby/girror/Rakefile -> ./Rakefile (1565 bytes) I, [2010-12-31T13:43:40.866610 #2341] INFO -- : Setting mode: ./Rakefile => 100644 I, [2010-12-31T13:43:40.866853 #2341] INFO -- : Setting mtime: ./Rakefile => ["2010-12-31 13:39:07", "2010-12-31 13:28:11"] I, [2010-12-31T13:43:40.882452 #2341] INFO -- : Fetching file /home/paul/develop/ruby/girror/Gemfile -> ./Gemfile (423 bytes) I, [2010-12-31T13:43:40.885195 #2341] INFO -- : Setting mode: ./Gemfile => 100644 I, [2010-12-31T13:43:40.885317 #2341] INFO -- : Setting mtime: ./Gemfile => ["2010-12-31 13:39:08", "2010-12-28 16:26:55"]
...
I, [2010-12-31T13:43:40.974504 #2341] INFO -- : Fetching directory /home/paul/develop/ruby/girror/pkg -> ./pkg | [2010-12-31 13:39:07 +0300, 2010-12-31 13:39:08 +0300, 0, 0, "40755"] I, [2010-12-31T13:43:40.980814 #2341] INFO -- : Fetching file /home/paul/develop/ruby/girror/pkg/girror-0.0.0.gem -> ./pkg/girror-0.0.0.gem (61440 bytes) I, [2010-12-31T13:43:40.995837 #2341] INFO -- : Setting mode: ./pkg/girror-0.0.0.gem => 100644 I, [2010-12-31T13:43:40.996319 #2341] INFO -- : Setting mtime: ./pkg/girror-0.0.0.gem => ["2010-12-31 13:39:10", "2010-12-31 13:39:07"] I, [2010-12-31T13:43:40.996829 #2341] INFO -- : Setting mode: ./pkg => 40755 I, [2010-12-31T13:43:40.997039 #2341] INFO -- : Setting mtime: ./pkg => ["2010-12-31 13:39:08", "2010-12-31 13:39:07"] I, [2010-12-31T13:43:40.997403 #2341] INFO -- : Disconnected from remote paul I, [2010-12-31T13:43:40.997466 #2341] INFO -- : Committing changes to local git repo I, [2010-12-31T13:43:41.061205 #2341] INFO -- : Finishing
Note that remote git-related files aren't got.
== Contributing to girror
== Copyright
Copyright (c) 2010 Pavel Argentov. See LICENSE.txt for further details.
FAQs
Unknown package
We found that girror demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Astral unveils pyx, a Python-native package registry in beta, designed to speed installs, enhance security, and integrate deeply with uv.
Security News
The Latio podcast explores how static and runtime reachability help teams prioritize exploitable vulnerabilities and streamline AppSec workflows.
Security News
The latest Opengrep releases add Apex scanning, precision rule tuning, and performance gains for open source static code analysis.