Goffi's cp, a fancy file copier
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

README.md 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. gcp
  2. ===
  3. gcp (Goffi's cp) is a file copier.
  4. License
  5. =======
  6. gcp is free software: you can redistribute it and/or modify it under the terms
  7. of the GNU General Public License as published by the Free Software Foundation,
  8. either version 3 of the License, or (at your option) any later version.
  9. gcp is distributed in the hope that it will be useful, but WITHOUT ANY
  10. WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  11. PARTICULAR PURPOSE. See the GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License along with
  13. gcp. If not, see <http://www.gnu.org/licenses/>.
  14. About
  15. =====
  16. gcp is a file copier, loosely inspired from cp, but with high level
  17. functionalities such as:
  18. - **Progress bar.**
  19. - gcp **keeps copying** even when there is an issue: it just skips the file,
  20. logs an error and goes on.
  21. - **Logging**: gcp writes what it's doing to a log file; this allows you to
  22. know which files were effectively copied.
  23. - **Fixing file names** to be compatible with the target filesystem (e.g.
  24. removing incompatible chars like `?` or `*` on FAT).
  25. - **Queue**: if you launch a copy when another copy is already running, the
  26. files are added to the first queue; this optimizes hard drive head movement
  27. and filesystem fragmentation.
  28. - **Files saving**: you can keep track of the files you have copied, and copy
  29. them again later (useful when, for example, you copy some free music to your
  30. friends on a regular basis).
  31. - gcp will be **approximately option-compatible with cp** (approximately
  32. because the behaviour is not exactly the same, see below).
  33. **WARNING**: gcp is at a relatively early stage of development, use at your own
  34. risks!
  35. How to use it?
  36. ==============
  37. Pretty much like cp (see `gcp --help`).
  38. Please note that the behaviour is not exactly the same as cp's, even if gcp
  39. aims to be option-compatible. Mainly, the destination filenames can be modified
  40. (cf. the `--fs-fix` option).
  41. gcp doesn't implement all the options from cp yet, but it's a long-term goal.
  42. Logging
  43. =======
  44. The log file is aimed to be used by gcp itself, buts remains human-readable. It
  45. is located in `~/.gcp/journal`.
  46. 3 states are used:
  47. - **OK** means the file was copied and all operation were successful.
  48. - **PARTIAL** means the file was copied, but something went wrong (file
  49. permissions could not be preserved, file name had to be changed, etc.).
  50. - **FAILED**: the file was *not* copied.
  51. After the state, a list of things that went wrong is shown, separated by ", ".
  52. Contribution ideas
  53. ==================
  54. Here are some ideas for future developments:
  55. - handle XDG
  56. - copy queue management (moving copy order)
  57. - advanced console interface
  58. - notification (XMPP and maybe email) when a long copy is finished
  59. - retry for files that were not correctly copied
  60. - badly encoded unicode filenames fix
  61. - file copy integrity check
  62. And in an even more distant future:
  63. - graphic interface
  64. - desktop (Kde, Gnome, XFCE...) integration
  65. - distant copy (FTP)
  66. - basic server mode, for copying files on network without the need of NFS or
  67. other heavy stuff
  68. Credits
  69. =======
  70. A big big thanks to the authors/contributors of...
  71. * **progressbar**:
  72. gcp uses [ProgressBar](https://pypi.python.org/pypi/progressbar), a class
  73. coded by Nilton Volpato that allows the textual representation of
  74. progression.
  75. * **GLib**:
  76. This heavily used library is used here for the main loop, event catching, and
  77. for DBus. Get it at <https://developer.gnome.org/glib/>.
  78. * **DBus**:
  79. This excellent IPC is ut the heart of gcp. Get more information at
  80. <https://www.freedesktop.org/wiki/Software/dbus/>.
  81. * **Python** and its amazing standard library:
  82. gcp was coded quickly for my own needs thanks to this excellent and efficient
  83. language and its really huge standard library. Python can be download at
  84. <https://www.python.org/>.
  85. If I forgot any credit, please contact me (email below) to fix that.
  86. Big thanks to contributors and package maintainers.
  87. Contributors
  88. ============
  89. * Original author: Jérôme Poisson aka Goffi <goffi@goffi.org> 2010-2011.
  90. * Thomas Preud'homme <robotux@celest.fr> 2011: manpage, stat resolution fix.
  91. * Jingbei Li aka petronny 2016: conversion to Python3.
  92. * Matteo Cypriani <mcy@lm7.fr> 2018: `--fs-fix` option, Python3 fixes.
  93. Contact
  94. =======
  95. Feedback, bug reports, patches, etc. are welcome, either by email or on the
  96. repository's issue tracker <https://code.lm7.fr/mcy/gcp/issues>.
  97. You can also have a look at Goffi's other main project, [Salut à
  98. Toi](https://www.salut-a-toi.org/) (SàT), a Jabber/XMPP-based multi-frontend,
  99. multipurpose communication tool.
  100. Don't hesitate to give feedback :)